2014-02-16 99 views
1

我有一個代碼連接使用加號運算符的兩個字符串。如果兩個字符串爲空,則兩個字符串的和不爲空。我想區分String.Empty + default(string)和default(string)+ default(string)。這兩個concat操作結果都是String.Empty。奇怪的空串連接行爲

爲什麼總數都是String.Empty?

回答

1

這是因爲空字符串爲空字符串MSDN處理:

在字符串連接操作中,C#編譯器將一個空字符串同一個空字符串,但不轉換原始的價值空字符串

+0

Thans。我會寫一個特殊的字符串concat方法。 – selami

4

運算符調用字符串參數的+由C#編譯器翻譯爲調用string.Concat方法。以下是此方法的說明文檔:

使用空字符串代替任何空參數。

所以基本上這是設計。 string.Concat方法永遠不會返回null。

+0

強調:'+'是由編譯器處理的,這不是您可以通過重載'operator +'來實現的類。 –

+0

是的。這就是我在第一句話中提到的。 C++編譯器翻譯'+'運算符以調用string.Concat方法。 –