Используйте сопоставление шаблонов, чтобы избежать проверки "is", за которой следует приведение (IDE0020 и IDE0038)

В этой статье описаны два связанных правила и IDE0020IDE0038.

Свойство Значение
Идентификатор правила IDE0020
Заголовок Использование сопоставления шаблонов, чтобы избежать проверки is, за которой следует приведение (с переменной)
Категория Стиль
Подкатегории Правила языка (параметры сопоставления шаблонов)
Применимые языки C#
Параметры csharp_style_pattern_matching_over_is_with_cast_check
Свойство Значение
Идентификатор правила IDE0038
Заголовок Использование сопоставления шаблонов, чтобы избежать проверки is, за которой следует приведение (без переменной)
Категория Стиль
Подкатегории Правила языка (параметры сопоставления шаблонов)
Применимые языки C#
Параметры csharp_style_pattern_matching_over_is_with_cast_check

Обзор

Это правило стиля относится к использованию сопоставления шаблонов C#, например, o is int iчерез is проверка, за которым следует приведение, напримерif (o is int) { ... (int)o ... }. Включите или IDE0020IDE0038 на основе того, следует ли сохранить выражение приведения в отдельную локальную переменную:

  • IDE0020: выражение приведения сохраняется в локальной переменной. Например, if (o is int) { var i = (int)o; } сохраняет результат (int)o в локальной переменной.
  • IDE0038: выражение приведения не сохраняется в локальную переменную. Например, if (o is int) { if ((int)o == 1) { ... } } не сохраняет результат (int)o в локальную переменную.

Параметры

Задайте значение связанного параметра для этого правила, чтобы указать, предпочтительнее ли сопоставление шаблонов или is проверка, за которым следует приведение типов.

Дополнительные сведения о настройке параметров см . в разделе "Формат параметров".

csharp_style_pattern_matching_over_is_with_cast_check

Свойство Значение Описание
Имя параметра csharp_style_pattern_matching_over_is_with_cast_check
Значения параметра true Предпочитать сопоставления шаблонов вместо выражений is с приведениями типов.
false Отключает проблемное правило.
Значение параметра по умолчанию true
// csharp_style_pattern_matching_over_is_with_cast_check = true
if (o is int i) {...}

// csharp_style_pattern_matching_over_is_with_cast_check = false
if (o is int) {var i = (int)o; ... }

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

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

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

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

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

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

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

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

См. также