我试图string.Join使用以下参数调用(第一个参数是分隔符):
string.Join(";", null, "string", 0); //returns empty string ???.
string.Join(";", null, null, 0); //returns empty string ???.
string.Join(";", null, null, null); //returns ";;;" - Good
string.Join(";", 0, 0, 0); //returns "0;0;0" - Good
string.Join(";", 0, null, 0); // "0;;0" - Good
string.Join(";", null, 0, null); // empty
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么它这样做?如何依赖string.Join在这种情况下?
该String.Join(String,?Object[])超载选择以下电话:
string.Join(";", null, "string", 0); // empty string
string.Join(";", null, null, 0); // empty string
string.Join(";", 0, 0, 0); // "0;0;0"
string.Join(";", 0, null, 0); // "0;;0"
string.Join(";", null, 0, null); // empty string
Run Code Online (Sandbox Code Playgroud)
从文档中(参见Notes to Callers):
如果值的第一个元素为null,则该
Join(String,?Object[])方法不会连接值中的元素,而是返回String.Empty.
String.Join(String,?String[])为此调用选择了不共享相同实现怪癖的重载:
string.Join(";", null, null, null); // ";;;"
Run Code Online (Sandbox Code Playgroud)