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