CA1309: Ordinal-StringComparison verwenden.

Eigenschaft Wert
Regel-ID CA1309
Titel Ordinal-StringComparison verwenden.
Kategorie Globalisierung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Nein

Ursache

Durch einen nicht linguistischen Zeichenfolgenvergleich wird der StringComparison-Parameter weder auf Ordinal noch auf OrdinalIgnoreCase festgelegt.

Regelbeschreibung

Viele Zeichenfolgenvorgänge – vor allem die Methoden System.String.Compare und System.String.Equals – bieten jetzt eine Überladung, die einen System.StringComparison-Enumerationswert als Parameter akzeptiert.

Wenn Sie entweder StringComparison.Ordinal oder StringComparison.OrdinalIgnoreCase angeben, ist der Zeichenfolgenvergleich nicht linguistisch. Das bedeutet, dass die Merkmale, die für natürliche Sprache spezifisch sind, bei Vergleichsentscheidungen ignoriert werden. Wenn Merkmale der natürlichen Sprache ignoriert werden, basieren die Entscheidungen auf einfachen Bytevergleichen, nicht auf der Groß-/Kleinschreibung oder Äquivalenztabellen, die je nach Kultur parametrisiert sind. Wenn also der Parameter explizit auf StringComparison.Ordinal oder StringComparison.OrdinalIgnoreCase festgelegt wird, kann Code häufig schneller ausgeführt werden und ist präziser und zuverlässiger.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Methode für den Zeichenfolgenvergleich in eine Überladung, die die Enumeration System.StringComparison als Parameter akzeptiert, und geben Sie entweder Ordinal oder OrdinalIgnoreCase an. Sie können z. B. String.Compare(str1, str2) in String.Compare(str1, str2, StringComparison.Ordinal) ändern.

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, eine Warnung dieser Regel zu unterdrücken, wenn die Bibliothek oder Anwendung nur für eine begrenzte lokale Zielgruppe konzipiert ist oder wenn die Semantik der aktuellen Kultur verwendet werden soll.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch