我看着下面的表達式:爲什麼string.Join(string,object [])是特殊的?
string.Join(",", new object[] { null, "StackOverflow" })
string.Join(",", new string[] { null, "StackOverflow" })
string.Join(",", new object[] { string.Empty, "StackOverflow" })
string.Join(",", new string[] { string.Empty, "StackOverflow" })
我還以爲他們會返回相同的值:
,StackOverflow
然而,第一個表達式實際返回string.Empty
。此is actually defined behavior:
如果值的第一個元素爲null,則Join(String,Object [])方法不會連接值中的元素,而是返回String.Empty。此問題的一些解決方法是可用的。最簡單的方法是將String.Empty的值賦給數組的第一個元素,如下例所示。
有誰知道這種不一致性背後的原因是什麼?
有了那種措辭(「解決辦法」,「發行」),我認爲這是一個錯誤,而不是預期的行爲... – Vache
@Vache不,這是有意編碼的。在反射器打開它,看看.. –
@SriramSakthivel是的,我可以看到,但低於幾行有一些代碼,這似乎矛盾的這種行爲。有一個'if'處理第一個元素的字符串表示的空值。 – Vache