CA1309: Użyj porządkowego StringComparison
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1309 |
Tytuł | 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 9 | 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.