Zeichenfolgenvergleich ohne Berücksichtigung der Groß-/Kleinschreibung in C#
Bei String-Vergleichen in C# müssen Sie normalerweise die Groß-/Kleinschreibung ignorieren. Auch wenn Sie zunächst die Verwendung der StringComparison.OrdinalIgnoreCase
-Methode mit Equals
in Betracht ziehen, kann dies zu unerwarteten Ergebnissen führen.
Im folgenden Codebeispiel:
<code class="language-csharp">drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));</code>
Das Problem besteht darin, die Methode Equals
mit einem Ausdruck Lambda zu verwenden. Der Ausdruck Lambda erwartet einen booleschen Ausdruck, aber die Methode Equals
gibt void zurück.
In .NET Framework 4 und höher wird empfohlen, die Methode String.Compare
in Kombination mit StringComparison.OrdinalIgnoreCase
für den Zeichenfolgenvergleich ohne Berücksichtigung der Groß- und Kleinschreibung zu verwenden, wie unten gezeigt:
<code class="language-csharp">String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0</code>
Alternativ können Sie die String.Equals
-Methode verwenden, um den Code besser lesbar und weniger fehleranfällig zu machen:
<code class="language-csharp">String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) </code>
Diese Methoden stellen sicher, dass Zeichenfolgenvergleiche ohne Berücksichtigung der Groß-/Kleinschreibung durchgeführt werden und genaue Ergebnisse liefern.
Das obige ist der detaillierte Inhalt vonWie führt man String-Vergleiche ohne Berücksichtigung der Groß-/Kleinschreibung in C# korrekt durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!