string.Split()的未记载的重载?

Nei*_*l N 8 .net intellisense visual-studio

根据String.Split上的 Intellisense和MSDN doc,没有string.Split的无参数重载.但如果我输入

string[] foo = bar.Split();
Run Code Online (Sandbox Code Playgroud)

它汇编.它有效.我已经在Visual Studio 2008和2010中验证了这一点.在这两种情况下,intellisense都不会显示无参数的重载.

是否有一个原因?MSDN/Intellisense文档中是否还有其他缺失的重载?通常浏览intellisense中的重载是我如何最好地确定使用哪个重载.我讨厌在整个.Net框架中错过其他可用选项.

编辑:如上所示,它在空格上分裂.

dri*_*iis 16

这是因为斯普利特有一个参数超载.不提供参数与给出空数组相同.换句话说,你正在调用这个重载.

"some text".Split();
Run Code Online (Sandbox Code Playgroud)

是相同的:

"some text".Split(new char[0]);
Run Code Online (Sandbox Code Playgroud)

以下是params关键字的文档.您可能知道,它用于为方法提供可变数量的参数.这个数字可能为零.


Pau*_*ams 8

我打赌它匹配这个String.Split重载:

public string[] Split(params char[] separator)
{
    return this.Split(separator, 0x7fffffff, StringSplitOptions.None);
}
Run Code Online (Sandbox Code Playgroud)

此函数可接受0个参数.如果没有分隔符,则默认为空格.


And*_*nov 5

实际上你在这里调用的是string.Split(params char [] separator)

params(C#参考)

您可以发送以逗号分隔的参数声明中指定类型的参数列表,或者指定类型的参数数组.你也可以不发送任何参数.