为什么string.Join(“”,new object [] {null,“ a”,null,“ b”})重新运行string.Empty?

man*_*c66 2 c# string join object

我注意到string.Join(" ", new object[] { null, "a", null, "b"})退货string.Empty

注意string.Join(" ", new string[] { null, "a", null, "b"})返回a b(正如我期望的那样)

连接字符时,事情变得恶毒: string.Join(" ", new object[] { null, 'a', null, 'b'})它还会返回string.Empty

编辑:即使文档说了这件事(感谢@elgonzo),是否有合理的理由在框架中实现了这种例外?

参见https://dotnetfiddle.net/uM9SVp

bol*_*kay 7

根据文档

来电者须知

如果值的第一个元素是,则null,Join(String, Object[]) 方法不将值中的元素连接起来,而是返回 Empty。有许多解决此问题的方法。最简单的方法是将空值分配给数组的第一个元素,如以下示例所示。

object[] values = { null, "Cobb", 4189, 11434, .366 };
if (values[0] == null) values[0] = String.Empty;
Console.WriteLine(String.Join("|", values));
// The example displays the following output:
//      |Cobb|4189|11434|0.366
Run Code Online (Sandbox Code Playgroud)

我建议您阅读它,非常有趣。

  • @CamiloTerevinto:除了问题封闭之外,将其标记为窃是非常不合适的。Bolkay链接到源,并没有假装他们是作者。如果有的话,SO(和SE)**专门禁止仅链接的答案**,并期望将相关信息复制到答案中,因为链接可能会中断。 (5认同)
  • @CamiloTerevinto帖子的字面意思是指向文档的链接。那不是窃。这样可以节省人们时间,以准确显示他们所需要的信息,而无需扫描将来可能在某个时候消失甚至导致着色器无用的页面 (3认同)
  • @CamiloTerevinto:您正在回避主题。我特别从“撇开问题”开始,并回答了您的of窃行为。如果有必要解决问题(我认为这是值得商but的,但愿为您带来疑问的好处),那么就没有理由大肆指责人们people窃。如果有的话,bolkay符合SO要求,以避免仅链接的答案。 (3认同)
  • 抱歉,这对您有问题。但是,我可以对文档提供的内容进行什么样的解释?我相信它已经足够清楚了。 (2认同)
  • 这个答案很好:) (2认同)
  • “此问题似乎与编程无关”永远不要更改StackOverflow。大声笑,荒谬的修改。 (2认同)
  • @Stuart:公平地说,“为什么……?” 通常是一个开放式问题,通常会引起解释和意见。话虽这么说,有正当理由的答案(证据,文档或.Net设计人员的“神的话”答案)将是有趣且有效的,但这也将为许多不需要的观点打开大门。 (2认同)
  • 将对话内容移至聊天室可能是个好主意。 (2认同)