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


Использование сопоставления шаблонов (IDE0078 и IDE0260)

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

Собственность Ценность
идентификатор правила IDE0078
Заголовок Использование сопоставления шаблонов
Категория Стиль
подкатегория Языковые правила (параметры сопоставления шаблонов)
применимые языки C# 9.0+
Параметры csharp_style_prefer_pattern_matching
Свойство Ценность
идентификатор правила IDE0260
Заголовок Использование сопоставления шаблонов
категория Стиль
Подкатегория Языковые правила (параметры сопоставления шаблонов)
применимые языки C#
Параметры csharp_style_pattern_matching_over_as_with_null_check

Обзор

Это правило стиля касается использования шаблонов C#, соответствующих конструкциям.

IDE0260 специально помечает использование выражения as, за которым следует член, считываемый через с условным оператором NULL. Это правило похоже на IDE0019, которое помечает использование выражения as, за которым следует проверка null.

Параметры

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

csharp_style_prefer_pattern_matching (IDE0078)

Свойство Ценность Описание
имя параметра Предпочтение стилю C# с использованием сопоставления шаблонов
значения опции true Предпочитать использовать конструкции сопоставления шаблонов, когда это возможно
false Предпочитать не использовать конструкции сопоставления шаблонов.
значение параметра по умолчанию true

csharp_style_pattern_matching_over_as_with_null_check (IDE0260)

Этот параметр также настраивает правило IDE0019.

Свойство Ценность Описание
имя параметра стиль_csharp_сопоставление_шаблонов_вместо_as_с_проверкой_на_нулевое_значение
значения опции true Предпочитайте сопоставление шаблонов по сравнению с выражением as с доступом к члену с пустым условным значением.
false Отключает правило.
значение параметра по умолчанию true

Примеры

IDE0078

// csharp_style_prefer_pattern_matching = true
var x = i is default(int) or > (default(int));
var y = o is not C c;

// csharp_style_prefer_pattern_matching = false
var x = i == default || i > default(int);
var y = !(o is C c);

IDE0260

// Code with violations.
object? o = null;
if ((o as string)?.Length == 0)
{
}

// Fixed code (csharp_style_pattern_matching_over_as_with_null_check = true).
object? o = null;
if (o is string { Length: 0 })
{
}

Подавление предупреждения

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

#pragma warning disable IDE0078 // or IDE0260
// The code that's violating the rule is on this line.
#pragma warning restore IDE0078 // or IDE0260

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0078.severity = none
dotnet_diagnostic.IDE0260.severity = none

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

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

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

См. также