И по данным Intellisense и по данным документа MSDN о строке. Разделение, нет никаких перегрузок без параметров строки. Разделение. Все же, если я ввожу
string[] foo = bar.Split();
Это компилирует. И это работает. Я проверил это в обеих Visual Studio 2008 и 2010. В обоих случаях intellisense не показывает перегрузку без параметров.
Существует ли причина этого? Там кто-либо другой пропускает перегрузки из документов MSDN/Intellisense? Обычно просматривание перегрузок в intellisense состоит в том, как я лучше всего определяю который перегрузка использовать. Я не хотел бы думать, что я пропускаю другие доступные варианты всюду по платформе .NET.
Править: как показано выше, это разделяет на пробеле.
Это потому, что Split имеет перегрузку params. Передача без параметров - это то же самое, что передача пустого массива. Другими словами, вы вызываете эту перегрузку.
"some text".Split();
Это то же самое, что:
"some text".Split(new char[0]);
Вот документация по ключевому слову params. Как вы, вероятно, знаете, оно используется для задания методу переменного числа параметров. Это число может быть нулевым.
Бьюсь об заклад, это соответствует этой перегрузке String.Split
:
public string[] Split(params char[] separator)
{
return this.Split(separator, 0x7fffffff, StringSplitOptions.None);
}
0 аргументов допустимы для этой функции. Без разделителей по умолчанию используется пробел .
На самом деле вы вызываете здесь string.Split (params char [] separator)
Вы можете отправить список разделенных запятыми аргументы типа, указанного в объявлении параметра, или массив аргументов указанного типа. Вы также можете не отправлять аргументы .
Это связано с недостатком представления параметров как 'params array []'. См. Подпись следующего метода, как описано в MSDN, поэтому очевидно, что вы передаете пустой массив.
public string[] Split(params char[] separator)
String.Split ()
имеет несколько перегрузок; вы правы, что ни одна из этих перегрузок не является без параметров, однако одна из них является переменной: String.Split (params char [])
. Частью переменной длины в списке аргументов может быть любое количество аргументов, включая ноль - это перегрузка, которую вы здесь вызываете.
public string[] Split(params char[] separator)
params 0 или больше