Вопрос
Почему я получаю эту ошибку?
public class ParameterParser
{
public List<string> ParseParameter(string queryString)
{
queryString = queryString.Replace(" ", "");
string[] strs = queryString.Split(@"(", @"=", @",", @"<>",
StringSplitOptions.None);
List<string> parameters = new List<string>();
foreach (string ss in strs)
{
string s = ss.Trim(')');
if (s.StartsWith("@") && !s.Equals("") && s!=null)
{
parameters.Add(s.Replace(" ", ""));
}
}
return parameters;
}
}
Ошибка 3 Наилучшее перегруженное соответствие метода для 'string.Split (params char [])' имеет недопустимые аргументы F: ... \ ParameterParser.cs
Решение
Если вы хотите передать массив строк, вы должны сделать это явно:
string[] strs = queryString.Split(new string[] {"(", "=", ",", "<>"},
StringSplitOptions.None);
Я подозреваю, что вы моделировали свой код на что-то вроде этого:
string[] strs = queryString.Split('(', '=', ',');
Это использует массив параметров (модификатор params
в C #). Массивы параметров применимы только к последнему параметру, и перегрузка String.Split
не требует params string[]
. Вот почему это не работает для вас.
Обратите внимание, что я изменил строки на простые строковые литералы - я бы порекомендовал использовать только строковые литералы, когда вам это действительно нужно.
Другие советы
@ " (" ;, @ " = " ;, @ ", " ;, @ " lt; > " не является ни одной строкой или массивом char []
Попробуйте это:
string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);