这是Split方法的未记录的覆盖吗?

Wil*_*och 6 c#

我刚刚发现这个代码不仅编译,而且似乎在任何空格上分割字符串.

List<string> TableNames = Tables.Split().ToList();
Run Code Online (Sandbox Code Playgroud)

但它没有在intellisense中显示,它不在MSDN页面上.

这只是一个没有文档的覆盖吗?因此,使用是否危险?

Ada*_*ear 10

这不是一个覆盖.在这种情况下,编译器会转换Split()Split(char[])空参数.

拆分定义

public string[] Split(
    params char[] separator
)
Run Code Online (Sandbox Code Playgroud)

params允许您指定可变数量的参数,包括根本不包含参数.如果没有提供参数(如您的示例中所示),则separator数组将为空.

从上面链接的MSDN页面:

如果separator参数为null或不包含任何字符,则假定空格字符为分隔符.

这就是为什么你看到字符串在空格上分割的原因.这只是默认行为而不是未记录的功能,因此您可以自由使用它而不必担心会出现异常的副作用.好吧,除非默认行为在.NET的未来版本中发生变化,但这对我来说似乎不太可能,因为空格是合理的默认值.

  • 打了十五秒钟.诅咒!(+ 1):) (2认同)