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