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

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

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

Обзор

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

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

Параметры

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

csharp_style_prefer_pattern_matching (IDE0078)

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

csharp_style_pattern_matching_over_as_with_null_проверка (IDE0260)

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

Свойство значение Описание
Имя параметра csharp_style_pattern_matching_over_as_with_null_check
Значения параметра 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

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

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

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

См. также