461 Stimmen

Vergleich zweier Zeichenketten, ohne Berücksichtigung der Groß-/Kleinschreibung in C#

Welche der beiden folgenden Möglichkeiten ist effizienter? (Oder gibt es vielleicht eine dritte Option, die noch besser ist?)

string val = "AStringValue";

if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))

O

if (val.ToLowerCase() == "astringvalue")

?

6voto

foxy Punkte 7539

Ersteres ist am schnellsten. Es stellt sich heraus, dass val ist unveränderlich, und daher wird ein neues String-Objekt mit String.ToLowerCase() erstellt, anstatt nur einen direkten Vergleich mit dem String-Comparer durchzuführen. Die Erstellung eines neuen String-Objekts kann kostspielig sein, wenn Sie dies viele Male pro Sekunde tun.

4voto

Tomasz Jaskuλa Punkte 15373

Sie sollten sich auch diese bereits beantwortete Frage ansehen Unterschiede bei String-Vergleichsmethoden in C#

2voto

Ruslan Punkte 9611

1. ist effizienter (und die bestmögliche Option), weil val.ToLowerCase() erzeugt ein neues Objekt, da Strings unveränderlich sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X