перегрузки для string.Split
являются:
public string[] Split(params char[] separator)
public string[] Split(params char[] separator, int count)
public string[] Split(params char[] separator, StringSplitOptions options)
public string[] Split(params char[] separator, int count, StringSplitOptions options)
public string[] Split(string[] separator, StringSplitOptions options)
public string[] Split(string[] separator, int count, StringSplitOptions options)
так string.Split(char)
работает, потому что спецификатор params
позволяет компилятору обрабатывать один символ как массив с одним значением, поэтому выбирается первая перегрузка.
С
public string[] Split(params string[] separator)
и
public string[] Split(string separator)
не перегружает и не существует неявное преобразование из string
к char[]
, пушка компилятор непосредственно связывать string.Split(string)
.
Некоторые альтернативы, которые будут работать:
valuesAsString.Split(new [] {" "}, StringSplitOptions.None);
valuesAsString.Split(" ".ToCharArray());
или просто
valuesAsString.Split();
, так как компилятор обрабатывает отсутствие значений как пустой «массив» для параметра params
, и в документации:
Если параметр разделителя равен нулю или не содержит символов, символ «белый пробел» rs считаются разделителями. Символы белого пространства определяются стандартом Unicode и возвращают true, если они передаются методу Char.IsWhiteSpace.
Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
Что значит «недействительно»?Вы имеете в виду ошибку компиляции? Какая ошибка? –
Потому что такой перегрузки нет. Почему нет такой перегрузки? Угадайте, что только программисты, работающие в Microsoft, которые пишут фреймворк, могут сказать наверняка, иначе мы можем только догадываться. –