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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.