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.