Frage
Warum erhalte ich diesen Fehler?
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;
}
}
Fehler 3 Die beste überladene Methode Spiel für 'String.split (params char [])' hat einige ungültige Argumente F: ... \ ParameterParser.cs
Lösung
Wenn Sie ein Array von Strings übergeben möchten, müssen Sie das explizit tun:
string[] strs = queryString.Split(new string[] {"(", "=", ",", "<>"},
StringSplitOptions.None);
Ich vermute, Sie wurden Modellierung Code auf so etwas wie folgt aus:
string[] strs = queryString.Split('(', '=', ',');
Dies wird mit einem Parameter array (der params
Modifikator in C #). Parameter-Arrays sind nur für die letzten Parameter, und keine Überlastung der String.Split
nimmt eine params string[]
. Deshalb war es nicht für Sie arbeiten.
Beachten Sie, dass ich die Saiten in einfache Stringliterale geändert haben - ich würde empfehlen, nur wörtlich Stringliterale verwenden, wenn Sie tatsächlich brauchen, um
.Andere Tipps
@ "(" @ "=" @ " "@"<>" ist nicht eine einzelne Zeichenfolge oder ein char [] array
Versuchen Sie folgendes:
string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);