Поделиться через


Использовать порядковый параметр 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).

Отключение предупреждений

Если библиотека или приложение предназначены для ограниченной локальной аудитории или необходимо использовать семантику текущего языка и региональных параметров, для данного правила можно отключить вывод предупреждений.

См. также

Ссылки

Укажите StringComparison

Другие ресурсы

Предупреждения глобализации