Freigeben über


CA1307: "StringComparison" zur Verdeutlichung angeben

Eigenschaft Wert
Regel-ID CA1307
Titel "StringComparison" zur Verdeutlichung angeben
Kategorie Globalisierung
Fix führt zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Nein
Anwendbare Sprachen C# und Visual Basic

Ursache

Ein Zeichenfolgenvergleich verwendet eine Methodenüberladung, bei der kein StringComparison-Parameter festgelegt wird.

Regelbeschreibung

Viele Zeichenfolgenvergleiche stellen eine Überladung bereit, die einen StringComparison-Enumerationswert als Parameter akzeptiert.

Wenn eine Überladung vorhanden ist, die einen StringComparison-Parameter annimmt, sollte sie anstelle einer Überladung verwendet werden, die diesen Parameter nicht annimmt. Wenn Sie diesen Parameter explizit festlegen, wird Ihr Code häufig übersichtlicher und leichter zu verwalten. Weitere Informationen finden Sie unter Explizites Angeben von Zeichenfolgenvergleichen.

Hinweis

Diese Regel berücksichtigt nicht den Standard-StringComparison-Wert, der von der Vergleichsmethode verwendet wird. Daher kann es für Methoden, die den Ordinal-Zeichenfolgenvergleich standardmäßig verwenden, und den Benutzer, der diesen Standardvergleichsmodus verwenden wollte, möglicherweise fehleranfällig sein. Wenn Sie nur Verstöße bei bekannten Zeichenfolgenmethoden anzeigen möchten, bei denen standardmäßig kulturabhängige Zeichenfolgenvergleiche verwendet werden, verwenden Sie stattdessen CA1310: StringComparison um die Korrektheit sicherzustellen.

So beheben Sie Verstöße

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Zeichenfolgenvergleichsmethoden zu Überladungen, die StringComparison-Enumeration als Parameter akzeptieren. Sie können z. B. str1.IndexOf(ch1) in str1.IndexOf(ch1, StringComparison.Ordinal) ändern.

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, eine Warnung aus dieser Regel zu unterdrücken, wenn keine klare Absicht erforderlich ist. Beispielsweise ist es für Testcode oder nicht lokalisierbaren Code möglicherweise nicht erforderlich.

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 CA1307
// The code that's violating the rule is on this line.
#pragma warning restore CA1307

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

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

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

Siehe auch