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


Проверка null можно упростить (IDE0029, IDE0030 и IDE0270).

В этой статье описываются три связанных правила: IDE0029, IDE0030и IDE0270.

Свойство Значение
Идентификатор правила IDE0029
Заголовок Можно упростить проверка NULL (тернарное условное проверка)
Категория Стиль
Подкатегория Правила языка (настройки уровня выражения)
Применимые языки C# и Visual Basic
Параметры dotnet_style_coalesce_expression
Свойство Значение
Идентификатор правила IDE0030
Заголовок Проверка null можно упростить (тернарное условное проверка, допускающее значение NULL)
Категория Стиль
Подкатегория Правила языка (настройки уровня выражения)
Применимые языки C# и Visual Basic
Параметры dotnet_style_coalesce_expression
Свойство Значение
Идентификатор правила IDE0270
Заголовок Проверка null можно упростить (если проверка null)
Категория Стиль
Подкатегория Правила языка (настройки уровня выражения)
Применимые языки C# и Visual Basic
Параметры dotnet_style_coalesce_expression

Общие сведения

Правила IDE0029 и IDE0030 касаются использования выражений объединения со значением NULL, например , x ?? yи тернарных условных выражений с проверкамиnull, например x != null ? x : y. Правила различаются в отношении допустимости значений NULL выражений:

  • IDE0029: используется при использовании выражений, не допускающих значение NULL. Например, это правило может рекомендовать x ?? y вместо того, когда x и y являются ссылочными x != null ? x : y типами, не допускаемыми значения NULL.
  • IDE0030: используется при использовании выражений, допускающих значение NULL. Например, это правило может рекомендовать x ?? y вместо того, когда x и y являются типами значений, допускающих значение NULL, или ссылочными типами, допускаемыми значением NULL.x != null ? x : y

Правило IDE0270 помечает использование null проверка (== null или is null) вместо оператора объединения со значением NULL (??).

Варианты

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

dotnet_style_coalesce_expression

Свойство Значение Описание
Имя параметра dotnet_style_coalesce_expression
Значения параметра true Предпочитать выражения объединения со значением NULL.
false Отключает проблемное правило.
Значение параметра по умолчанию true

Примеры

IDE0029 и IDE0030

// Code with violation.
var v = x != null ? x : y; // or
var v = x == null ? y : x;

// Fixed code.
var v = x ?? y;
' Code with violation.
Dim v = If(x Is Nothing, y, x) ' or
Dim v = If(x IsNot Nothing, x, y)

' Fixed code.
Dim v = If(x, y)

IDE0270

// Code with violation.
class C
{
    void M()
    {
        var item = FindItem() as C;
        if (item == null)
            throw new System.InvalidOperationException();
    }

    object? FindItem() => null;
}

// Fixed code (dotnet_style_coalesce_expression = true).
class C
{
    void M()
    {
        var item = FindItem() as C ?? throw new System.InvalidOperationException();
    }

    object? FindItem() => null;
}
' Code with violation.
Public Class C
    Sub M()
        Dim item = TryCast(FindItem(), C)
        If item Is Nothing Then
            item = New C()
        End If
    End Sub

    Function FindItem() As Object
        Return Nothing
    End Function
End Class

' Fixed code (dotnet_style_coalesce_expression = true).
Public Class C
    Sub M()
        Dim item = If(TryCast(FindItem(), C), New C())
    End Sub

    Function FindItem() As Object
        Return Nothing
    End Function
End Class

Отключение предупреждений

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

#pragma warning disable IDE0029 // Or IDE0030 or IDE0270
// The code that's violating the rule is on this line.
#pragma warning restore IDE0029 // Or IDE0030 or IDE0270

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none

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

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

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

См. также раздел