Difference between string and String in C#
string
is an alias for System.String
. They compile to the same code, so at execution time there is no difference whatsoever. This is just one of the aliases in C#. The complete list is:
object: System.Object string: System.String bool: System.Boolean byte: System.Byte sbyte: System.SByte short: System.Int16 ushort: System.UInt16 int: System.Int32 uint: System.UInt32 long: System.Int64 ulong: System.UInt64 float: System.Single double: System.Double decimal: System.Decimal char: System.Char
In C#, string is an alias for the String class in .NET framework. In fact, every C# type has an equivalent in .NET. As another example, short and int in C# map to Int16 and Int32 in .NET.
So, technically there is no difference between string and String, but it is common practice to declare a variable using C# keywords. I’ve hardly seen anyone declaring an integer with Int32!
The only tiny difference is that if you use the String class, you need to import the System namespace on top of your file, whereas you don’t have to do this when using the string keyword.
Many developers prefer to declare a string variable with string but use the String class when accessing one of its static members:
There is one practical difference between string
and String
.
nameof(String); // compiles nameof(string); // doesn't compile
This is because string
is a keyword (an alias in this case) whereas String
is a type.
The same is true for the other aliases as well.
| Alias | Type | |-----------|------------------| | bool | System.Boolean | | byte | System.Byte | | sbyte | System.SByte | | char | System.Char | | decimal | System.Decimal | | double | System.Double | | float | System.Single | | int | System.Int32 | | uint | System.UInt32 | | long | System.Int64 | | ulong | System.UInt64 | | object | System.Object | | short | System.Int16 | | ushort | System.UInt16 | | string | System.String |
You don’t need import namespace (using System
😉 to use string
because it is a global alias of System.String
.
There is no difference between the two. You can use either of them in your code.
System.String
is a class (reference type) defined the mscorlib
in the namespace System
. In other words, System.String
is a type in the CLR
.
string
is a keyword in C#
In C#, string is the short version of System.String (String). They basically mean the same thing.
It’s just like bool
and Boolean
, not much difference..
String : Represent a class
string : Represent an alias