Domanda

Perché visualizzo questo errore?

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

Errore 3 La migliore corrispondenza del metodo sovraccarico per 'string.Split (params char [])' ha alcuni argomenti non validi F: ... \ ParameterParser.cs

È stato utile?

Soluzione

Se vuoi passare un array di stringhe, devi farlo esplicitamente:

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

Sospetto che stavi modellando il tuo codice su qualcosa del genere:

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

Questo utilizza un array di parametri (il modificatore params in C #). Le matrici di parametri sono applicabili solo per il parametro finale e nessun sovraccarico di String.Split richiede params string[]. Ecco perché non ha funzionato per te.

Nota che ho cambiato le stringhe in semplici letterali di stringa - consiglierei di usare letterali di stringa testuali solo quando è necessario.

Altri suggerimenti

@ " (" ;, @ " = " ;, @ ", " ;, @ " lt; > " non è una stringa singola o un array char []

Prova questo:

string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top