我刚刚发现这个代码不仅编译好了,而且似乎在任何空格上拆分字符串。
List<string> TableNames = Tables.Split().ToList();
然而它并没有在intellisense中显示,而且它不在MSDN page上。
这只是一个未记录的覆盖吗?因此,使用它是否危险?
答案 0 :(得分:10)
这不是一个覆盖。在这种情况下,编译器会使用空参数将Split()
转换为Split(char[])
。
将is defined拆分为
public string[] Split(
params char[] separator
)
params
允许您指定可变数量的参数,包括根本没有参数。如果没有提供参数(如您的示例中所示),则separator
数组将为空。
从上面链接的MSDN页面:
如果separator参数为null或不包含字符,则假定空格字符为分隔符。
这就是为什么你看到字符串在空格上分割的原因。这只是默认行为而不是未记录的功能,因此您可以自由使用它而不必担心会出现异常的副作用。好吧,除非默认行为在未来版本的.NET中发生变化,但这对我来说似乎不太可能,因为空格是一个合理的默认值。
答案 1 :(得分:3)
如果separator参数为Nothing 或者不包含任何字符,空格 字符被假定为 分隔符。空白字符是 由Unicode标准定义 如果它们被传递给,则返回true Char.IsWhiteSpace方法。
我个人称之为记录在案的行为。 :)