Pergunta
Por que estou recebendo este erro?
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;
}
}
Erro 3 O melhor jogo método sobrecarregado para 'string.split (params char [])' tem alguns argumentos inválidos F: ... \ ParameterParser.cs
Solução
Se você quer passar uma matriz de strings, você tem que fazer isso explicitamente:
string[] strs = queryString.Split(new string[] {"(", "=", ",", "<>"},
StringSplitOptions.None);
Eu suspeito que você estava modelando o seu código em algo parecido com isto:
string[] strs = queryString.Split('(', '=', ',');
Isso é usar um array parâmetro (o modificador params
em C #). As matrizes de parâmetros só são aplicáveis ??para o parâmetro final, e sem sobrecarga de String.Split
leva um params string[]
. É por isso que não estava funcionando para você.
Note que eu mudei as cordas em strings literais simples -. Eu recomendaria apenas usando strings literais literais quando você realmente precisa
Outras dicas
@ "(", @ "=", @ " " @"<>" não é uma única cadeia de caracteres ou um char [] matriz
Tente isto:
string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);