Ich habe die folgende Codezeile:
var connectionString = configItems.
Find(item => item.Name.ToLowerInvariant() == "connectionstring");
Die VS 2010-Code-Analyse sagt mir Folgendes:
Warnung 7 CA1308: Microsoft.Globalization: In Methode ... ersetzen Sie den Aufruf von 'string.ToLowerInvariant ()' durch String.ToUpperInvariant ().
Bedeutet das, dass ToUpperInvariant()
es zuverlässiger ist?
string.Equals(item.Name, "connectionstring", StringComparison.OrdinalIgnoreCase)
in diesem speziellen Fall wahrscheinlich der beste Ansatz ist.Antworten:
Google gibt einen Hinweis auf CA1308: Normalisieren Sie Zeichenfolgen in Großbuchstaben
Es sagt:
Also ja - ToUpper ist zuverlässiger als ToLower.
In Zukunft schlage ich vor, zuerst zu googeln - das mache ich für all die FxCop-Warnungen, die ich herumwerfe;) Hilft sehr beim Lesen der entsprechenden Dokumentation;)
quelle
Neben den Aussagen von TomTom ist .net für den Vergleich von Zeichenfolgen in Großbuchstaben optimiert. Die Verwendung der oberen Invariante ist also theoretisch schneller als die Verwendung der unteren Invariante.
Dies wird in der Tat in CLR über C # angegeben, wie in den Kommentaren ausgeführt. Der folgende Link zitiert diesen Teil des Buches. Ich bin mir nicht sicher, ob dies wirklich wahr ist, da auf MSDN zu diesem Thema nichts zu finden ist. Der String-Vergleichsleitfaden auf msdn erwähnt, dass toupperinvariant und tolowerinvariant gleich sind und erstere nicht bevorzugen.
Zeichenfolgenvergleiche in C #
quelle