Ordinal-StringComparison verwenden
Aktualisiert: November 2007
TypeName |
UseOrdinalStringComparison |
CheckId |
CA1309 |
Kategorie |
Microsoft.Globalization |
Unterbrechende Änderung |
Nicht unterbrechend |
Ursache
Durch einen nicht linguistischen Zeichenfolgenvergleich wird der StringComparison-Parameter weder auf Ordinal noch auf OrdinalIgnoreCase festgelegt.
Regelbeschreibung
Viele Zeichenfolgenoperationen, vor allem die Compare()-Methode und die Equals()-Methode, bieten jetzt eine Überladung, durch die ein StringComparision-Enumerationswert als Parameter akzeptiert wird.
Wenn Sie StringComparison.Ordinal oder StringComparison.OrdinalIgnoreCase festlegen, ist der Zeichenfolgenvergleich nicht linguistisch. Die für die natürliche Sprache spezifischen Features werden also ignoriert, wenn Vergleichsentscheidungen getroffen werden. Die Entscheidungen basieren folglich auf einfachen Bytevergleichen, wobei Groß-/Kleinschreibung oder nach Kultur parametrisierte Entsprechungstabellen ignoriert werden. Wenn der Parameter explizit auf StringComparison.Ordinal oder StringComparison.OrdinalIgnoreCase festgelegt wird, werden die Codeausführung beschleunigt sowie Richtigkeit und Zuverlässigkeit gesteigert.
Behandlung von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Zeichenfolgenvergleichsmethode in eine Überladung, die die StringComparison-Enumeration als Parameter akzeptiert, und geben entweder Ordinal oder OrdinalIgnoreCase an. Beispiel: Ändern Sie String.Compare(str1, str2) in String.Compare(str1, str2, StringComparison.Ordinal).
Wann sollten Warnungen unterdrückt werden?
Eine Warnung dieser Regel kann gefahrlos unterdrückt werden, wenn die Bibliothek oder Anwendung für eine begrenzte lokale Zielgruppe bestimmt ist bzw. die Semantik der aktuellen Kultur verwendet werden sollte.