Udostępnij za pośrednictwem


CA1309: Użyj porządkowego StringComparison

TypeName

UseOrdinalStringComparison

CheckId

CA1309

Kategoria

Microsoft.Globalization

Zmiana kluczowa

Niekluczowa

Przyczyna

Operacja porównania ciągu, która jest nielingwistyczna, nie ustawia parametru StringComparison na Ordinal lub OrdinalIgnoreCase.

Opis reguły

Wiele operacji na ciągach, z najwazniejszymi metodami String.Compare i String.Equals, zapewnia obecnie przeciążenie, które akceptuje wartość wyliczenia StringComparision jako parametr.

Gdy zostanie podane StringComparison.Ordinal lub StringComparison.OrdinalIgnoreCase, porównywanie ciągów będzie nielingwistyczne.Oznacza to, że funkcje, które są specyficzne dla języka naturalnego są ignorowane, gdy podejmowane są decyzje porównania.Oznacza to, że decyzje oparte są na prostym porównaniu bajtów i ignorują wielkość liter lub tabele równoważności, które są parametryzowane przez kulturę.Jako wynik, poprzez jawne ustawienie parametru na StringComparison.Ordinal lub StringComparison.OrdinalIgnoreCase, kod często zyskuje na prędkości, staje się bardziej poprawny i staje się bardziej niezawodny.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, należy zmienić metodę porównania ciągu na przeciążenie, które akceptuje wyliczenie StringComparison jako parametr i określić ten parametr jako Ordinal lub OrdinalIgnoreCase.Na przykład zmienić String.Compare(str1, str2) na String.Compare(str1, str2, StringComparison.Ordinal).

Kiedy pominąć ostrzeżenia

Bezpiecznie jest pominąć ostrzeżenie, gdy biblioteka lub aplikacja przeznaczona jest dla ograniczonej liczby odbiorców lokalnych lub gdy semantyka bieżącej kultury powinna zostać użyta.

Zobacz też

Informacje

CA1307: Określ StringComparison

Inne zasoby

Globalizacja — Ostrzeżenia