当我尝试连接两个null
字符串时,我看到了一个奇怪的结果:它返回一个空字符串!我无法想象它是否具有某种效用或为什么会发生这种情况。
示例:
string sns = null;
sns = sns + sns;
// It results in a String.Empty
string snss = null;
snss = String.Concat(snss, snss);
// It results in a String.Empty too!
有人可以告诉我它为什么会返回String.Empty
而不是null
吗?
答案 0 :(得分:4)
以下是来自C#语言规范的片段,“7.8.4加法运算符”部分:
字符串连接:
string operator +(string x, string y); string operator +(string x, object y); string operator +(object x, string y);
二进制
+
运算符的这些重载执行字符串连接。如果字符串连接的操作数是null
,则替换空字符串。否则,通过调用从类型ToString
继承的虚拟object
方法,将任何非字符串参数转换为其字符串表示形式。如果ToString
返回null
,则会替换空字符串。
答案 1 :(得分:2)
http://referencesource.microsoft.com/#mscorlib/system/string.cs
如果字符串为null,则返回String.Empty。
至于运营商+,我不太确定。