Вопрос

Почему я получаю эту ошибку?

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top