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