CA1310: укажите StringComparison для правильности

Свойство Значение
Идентификатор правила CA1310
Заголовок Используйте StringComparison, чтобы правильно указать намерение.
Категория Глобализация
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 No

Причина

Операция сравнения строк использует перегрузку метода, которая не задает параметр StringComparison и использует сравнение строк для определенного языка и региональных параметров по умолчанию. Таким образом, ее поведение будет зависеть от параметров языкового стандарта текущего пользователя.

Описание правила

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

Это правило помечает методы сравнения строк, в которых по умолчанию используется значение StringComparison, зависящее от языка и региональных параметров. Дополнительные сведения см. в разделе Сравнения строк, использующие текущий язык и региональные параметры.

Примечание.

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

Устранение нарушений

Чтобы устранить нарушение этого правила, замените методы сравнения строк перегрузками, принимающими перечисление StringComparison в качестве параметра. Например, измените String.Compare(str1, str2) на String.Compare(str1, str2, StringComparison.Ordinal).

Когда лучше отключить предупреждения

Вы можете безопасно отключить предупреждение из этого правила, если библиотека или приложение не предназначены для локализации.

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

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1310.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

См. также