Pregunta

¿Por qué recibo este error?

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;
    }
}

Error 3 La mejor coincidencia de método sobrecargado para 'string.Split (params char [])' tiene algunos argumentos no válidos F: ... \ ParameterParser.cs

¿Fue útil?

Solución

Si desea pasar una serie de cadenas, debe hacerlo explícitamente:

string[] strs = queryString.Split(new string[] {"(", "=", ",", "<>"}, 
                                  StringSplitOptions.None);

Sospecho que estabas modelando tu código en algo como esto:

string[] strs = queryString.Split('(', '=', ',');

Esto está usando una matriz de parámetros (el modificador params en C #). Las matrices de parámetros solo son aplicables para el parámetro final, y ninguna sobrecarga de String.Split requiere un params string[]. Por eso no funcionaba para usted.

Tenga en cuenta que he cambiado las cadenas en simples literales de cadena: recomendaría usar solo literales de cadena literales cuando realmente lo necesite.

Otros consejos

@ " (" ;, @ " = " ;, @ ", " ;, @ " lt; > " no es una sola cadena o una matriz char []

Prueba esto:

string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top