奇怪的空字符串连接行为

时间:2014-02-16 14:51:12

标签: c# string string-concatenation

我有一个使用plus运算符连接两个字符串的代码。如果两个字符串为null,则两个字符串的总和不为空。

var strLeft = default(string);
var strRight = default(string);

var strSum = strLeft + strRight;

我想区分String.Empty + default(字符串)和default(字符串)+ default(字符串)。 concat操作结果都是String.Empty。

为什么两个总计的结果都是String.Empty?

2 个答案:

答案 0 :(得分:4)

C#编译器将+运算符对字符串参数的调用转换为对string.Concat方法的调用。以下是此方法的文档说明:

  

使用Empty字符串代替任何null参数。

所以基本上就是设计。 string.Concat方法永远不会返回null。

答案 1 :(得分:1)

这是因为空字符串被视为空字符串MSDN

  

在字符串连接操作中,C#编译器将空字符串视为空字符串,但它不会转换原始空字符串的值