CA1309: Użyj porządkowego StringComparison

Właściwości Wartość
Identyfikator reguły CA1309
Stanowisko Użyj porządkowego ustawienia właściwości StringComparison
Kategoria Globalizacja
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

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 ciągów, co najważniejsze metody System.String.Compare i System.String.Equals , teraz udostępnia przeciążenie, które akceptuje System.StringComparison wartość wyliczenia 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 System.StringComparison wyliczenie jako parametr, i określ ordinal lub 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ż