为什么数组中的前导空值会导致string.Join()返回空字符串?

时间:2018-04-20 02:07:38

标签: c# string

以下测试通过书面说明。为什么? (即,为什么数组中的前导空值会导致string.Join()返回空字符串?)

[TestMethod]
public void Test_string_Join()
{
    object[] values0 = { "foo", 3, null };
    var text0 = string.Join(", ", values0);
    Console.WriteLine("text0 = " + text0);
    AssertX.AreEqual("foo, 3, ", text0); // works as expected

    object[] values1 = { null, "foo", 3, null };
    var text1 = string.Join(", ", values1);
    Console.WriteLine("text1 = " + text1);
    AssertX.AreEqual("", text1); // does NOT work as expected, why empty?
}

enter image description here

1 个答案:

答案 0 :(得分:1)

关于“数组”的问题是string.Join()。事实证明,微软违反了最不惊讶的原则,而String.Join(String, **Object[]**)的行为与String.Join(String, **String**[])的行为无效。 object[]超载有问题;字符串重载的行为与人们期望的一样。

我相信微软在提及“问题”并在object[]重载文档(由@ user202729提供的链接)中提供“解决方法”时也会承认。

我没想到object[]重载的文档与string[]重载(我仔细阅读)不同。