Friday, June 15, 2012

String concat with null

Source : My Higest Voted answer on StackOverflow
Question This is valid C# code
var bob = "abc" + null + null + null + "123";  // abc123
This is not valid C# code
var wtf = null.ToString(); // compiler error
Why is the first statement valid?

The reason for first one working:
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.

The reason of the error in second is:
null (C# Reference) - The null keyword is a literal that represents a null reference, one that does not refer to any object. null is the default value of reference-type variables.


  1. I've often though it would be great if Dot Net treated null as an object, so that null.ToString() would legally return null. Some languages do this.

    Oh well.

  2. The players would begin as members of the SCA, going to Phoenix for the Estrella War.

    The game was released on August 3, and is in stores now, but probably is where
    it will remain, sad to say. You Divide everyone at the party into two groups, or tribes.

    Also visit my blog post ... los angeles