Since true
is not a string type, how is null + true
a string ?
string s = true; //Cannot implicitly convert type \'bool\' to \'string\
null
will be cast to null string, and there is implicit converter from bool to string so the true
will be cast to string and then, +
operator will be applied: it's like: string str = "" + true.ToString();
if you check it with Ildasm:
string str = null + true;
it's as bellow:
.locals init ([0] string str)
IL_0000: nop
IL_0001: ldc.i4.1
IL_0002: box [mscorlib]System.Boolean
IL_0007: call string [mscorlib]System.String::Concat(object)
IL_000c: stloc.0