CA1307: укажите StringComparison для ясности

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

Причина

В операции сравнения строк используется перегрузка метода, которая не задает параметр StringComparison.

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

Во многих операциях сравнения строк используется перегрузка, которая в качестве параметра принимает значение перечисления StringComparison.

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

Примечание.

Это правило не учитывает значение по умолчанию StringComparison, используемое методом сравнения. Поэтому оно может быть слишком назойливым для методов, использующих сравнение строк Ordinal по умолчанию, и пользователя, планирующего использовать этот режим сравнения по умолчанию. Если нужно, чтобы отображались нарушения только для известных строковых методов, использующих сравнение строк по умолчанию для конкретного языка и региональных параметров, применяйте правило CA1310: используйте StringComparison, чтобы правильно указать намерение.

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

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

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

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

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

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

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

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

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

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

См. также