Поделиться через


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

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

Свойство Ценность
идентификатор правила 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 ... }. Включите IDE0020 или IDE0038 на основе того, следует ли сохранить выражение приведения в отдельную локальную переменную:

  • 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_стиль_сопоставления_шаблонов_вместо_проверки_и_приведения_типа
значения опций 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

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

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

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

См. также