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