Используйте сопоставление шаблонов, чтобы избежать проверки "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_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
Чтобы отключить все правила стиля кода, задайте уровень серьезности для категории Style
none
в файле конфигурации.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.