Бөлісу құралы:


CA1310: укажите StringComparison для повышения точности

Свойство Значение
Идентификатор правила CA1310
Заголовок Укажите StringComparison для обеспечения корректности.
Категория Глобализация
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

Операция сравнения строк использует перегрузку метода без указания параметра 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

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

См. также