Использовать порядковый параметр StringComparison
Обновлен: Ноябрь 2007
TypeName |
UseOrdinalStringComparison |
CheckId |
CA1309 |
Категория |
Microsoft.Globalization |
Критическое изменение |
Не критическое |
Причина
Операция сравнения строк, не являющаяся лингвистической, не задает параметру StringComparison ни значение Ordinal, ни OrdinalIgnoreCase.
Описание правила
Многие строковые операции, большинство важных методов Compare() и Equals() теперь предоставляют перегрузку, принимающую перечисление StringComparision в качестве параметра.
Если указывается либо StringComparison.Ordinal, либо StringComparison.OrdinalIgnoreCase сравнение строк будет нелингвистическим. То есть при принятии решений на основании сравнения игнорируются функции, характерные для естественного языка. Это означает, что решения основываются на простых байтовых сравнениях и игнорируют использование таблиц регистров и равенства, параметризованных по языку и региональным параметрам. В результате за счет явного задания параметру значения StringComparison.Ordinal или StringComparison.OrdinalIgnoreCase код часто становится более надежным и правильным, кроме того, увеличивается скорость его выполнения.
Устранение нарушений
Чтобы устранить нарушение данного правила, измените метод сравнения строк на перегрузку, использующую перечисление StringComparison в качестве параметра и задайте значение Ordinal или OrdinalIgnoreCase. Например, замените String.Compare(str1, str2) на метод String.Compare(str1, str2, StringComparison.Ordinal).
Отключение предупреждений
Если библиотека или приложение предназначены для ограниченной локальной аудитории или необходимо использовать семантику текущего языка и региональных параметров, для данного правила можно отключить вывод предупреждений.