Udostępnij za pośrednictwem


CA1309: Użyj porządkowego StringComparison

Właściwości Wartość
Identyfikator reguły CA1309
Tytuł Użyj ordinalnego StringComparison
Kategoria Globalizacja
Poprawka łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Nie.
Zastosowane języki C# i Visual Basic

Przyczyna

Operacja porównania ciągów, która nie jest lingwistyczna, nie ustawia parametru StringComparison na Ordinal lub OrdinalIgnoreCase.

Opis reguły

Wiele operacji na ciągach, przede wszystkim metody System.String.Compare i System.String.Equals, teraz udostępniają przeciążenie, które akceptuje wartość wyliczenia System.StringComparison jako parametr.

Po określeniu wartości StringComparison.Ordinal lub StringComparison.OrdinalIgnoreCase porównanie ciągów nie jest językowe. Oznacza to, że funkcje specyficzne dla języka naturalnego są ignorowane podczas podejmowania decyzji porównawczych. Ignorowanie cech języka naturalnego oznacza, że decyzje są oparte na prostych porównaniach bajtów, a nie na tabelach wielkości liter lub równoważności, które są sparametryzowane przez kulturę. W związku z tym, jawnie ustawiając parametr na StringComparison.Ordinal lub StringComparison.OrdinalIgnoreCase, kod często zyskuje szybkość, zwiększa poprawność i staje się bardziej niezawodny.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, zmień metodę porównywania ciągów na przeciążenie, które akceptuje wyliczenie System.StringComparison jako parametr, i określ albo Ordinal, albo OrdinalIgnoreCase. Na przykład zmień wartość String.Compare(str1, str2) na String.Compare(str1, str2, StringComparison.Ordinal).

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły, gdy biblioteka lub aplikacja jest przeznaczona dla ograniczonej grupy odbiorców lokalnych lub gdy należy używać semantyki bieżącej kultury.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też