Understanding the Difference Between ‘String’ and ‘string’ in C#

Mabrouk Mahdhi
3 min readAug 28, 2023

C# is a strongly-typed programming language, which means that knowing your data types is essential for writing effective C# code. In C#, one of the most frequently used data types is the string type, which can be declared as either String or string. This can lead to some confusion: What's the difference between String and string, and when should you use each?

In this post, we’ll delve into these two types to understand their similarities and differences and explore some scenarios where you might prefer one over the other.

Image by Freepik

The Basics: What Are String and string?

String

The String class is a part of the System namespace (System.String). It is a class that provides various methods for string manipulations like Substring, Concat, Replace, etc. You can use it like this:

using System;

namespace StringExample
{
class Program
{
static void Main(string[] args)
{
String name = "Mabrouk";
Console.WriteLine(name.ToLower()); // "mabrouk"
}
}
}

string

On the other hand, string is an alias for String in the C# language. It's a more readable way to declare a string variable and is syntactically simpler. string is simply shorthand for System.String.

namespace StringExample
{
class Program
{
static void Main(string[] args)
{
string name = "John";
Console.WriteLine(name.ToLower()); // "john"
}
}
}

The Similarities

  1. Interchangeable: You can use String and string interchangeably without any issues.
String name1 = "Mabrouk";
string name2 = "Mahdhi";

// perfectly valid
string fullName = name1 + " " + name2;

2. Same Methods: Because string is just an alias for System.String, you can use the same methods on both.

String name1 = "Mabrouk";
string name2 = "Mahdhi";

Console.WriteLine(name1.ToLower());
Console.WriteLine(name2.ToUpper());

The Differences

While functionally identical, there are some best practices regarding when to use one over the other.

  1. Readability: Many developers find that using string is more readable because it aligns well with other simple types like int, bool, and double.
  2. Namespacing: If you’ve declared using System;, you can use String without any problems. Otherwise, you'd have to use it as System.String.
  3. Standardization: Most coding standards for C# recommend using string over String for local variables and method parameters. For return types, either can be used, but it's usually a good idea to stay consistent.

When to Use String vs string

Use String When:

  1. Working with Static Methods: When you’re using static methods of the String class, it makes sense to use String.
String.Concat("Hello, ", "world!");
String.Format("{0} {1}", var1, var2);

2. Fully Qualified Name Required: If you are working in an environment where namespacing is an issue (very rare), you may need to specify System.String.

Use string When:

  1. Local Variables and Parameters: For local variable declaration and for method parameter types, it’s common to use string.
public void SayHello(string name)
{
string greeting = "Hello, " + name;
Console.WriteLine(greeting);
}

2. Readability: Using string keeps your code consistent with the use of other built-in types (int, bool, etc.).

Conclusion

The String and string types in C# are functionally identical, but there are some subtle best practices to consider when choosing between them. For most developers, using string for local variables and parameters while using String for calling static methods will make the code readable and consistent.

Happy Coding!

--

--

Mabrouk Mahdhi
Mabrouk Mahdhi

Written by Mabrouk Mahdhi

Founder @ CodeCampsis, Microsoft MVP

Responses (7)