Search code examples
c#language-design

Why is adding null to a string legal?


The MSDN article on String Basics shows this:

string str = "hello";
string nullStr = null;
string emptyStr = "";

string tempStr = str + nullStr; // tempStr = "hello"
bool b = (emptyStr == nullStr);// b = false;
string newStr = emptyStr + nullStr; // creates a new empty string
int len = nullStr.Length; // throws NullReferenceException

Why doesn't concatenating with null throw a null reference exception? Is it to make a programmer's life easier, such that they don't have to check for null before concatenation?


Solution

  • From MSDN:

    In string concatenation operations, the C# compiler treats a null string the same as an empty string, but it does not convert the value of the original null string.

    More information on the + binary operator:

    The binary + operator performs string concatenation when one or both operands are of type string.

    If an operand of string concatenation is null, an empty string is substituted. Otherwise, any non-string argument is converted to its string representation by invoking the virtual ToString method inherited from type object.

    If ToString returns null, an empty string is substituted.