Udostępnij za pośrednictwem


Sprawdzanie wartości null można uprościć (IDE0029, IDE0030 i IDE0270)

W tym artykule opisano trzy powiązane reguły, IDE0029, IDE0030i IDE0270.

Własność Wartość
Identyfikator Reguły IDE0029
Tytuł Sprawdzanie wartości null można uprościć (trójargumentowe sprawdzanie warunkowe)
Kategoria Styl
Podkategoria Reguły języka (preferencje na poziomie wyrażenia)
obowiązujące języki C# i Visual Basic
Opcje dotnet_style_coalesce_expression
Własność Wartość
identyfikator reguły IDE0030
Tytuł Sprawdzanie wartości null można uprościć (warunkowy operator trójargumentowy z obsługą null)
Kategoria Styl
podkategorii Reguły języka (preferencje na poziomie wyrażenia)
Stosowne języki C# i Visual Basic
opcje dotnet_style_coalesce_expression
Własność Wartość
ID reguły IDE0270
Tytuł Sprawdzenie wartości null można uprościć (jeśli null)
Kategoria Styl
podkategorii Reguły języka (preferencje na poziomie wyrażenia)
Stosowane języki C# i Visual Basic
opcje dotnet_style_coalesce_expression

Przegląd

Reguły IDE0029 i IDE0030 dotyczą wykorzystania wyrażeń łączenia wartości null, takich jak , na przykład x ?? y, w przeciwieństwie do wyrażeń warunkowych z kontrolą null, na przykład x != null ? x : y. Reguły różnią się w zależności od dopuszczalności wartości null dla wyrażeń.

Reguła IDE0270 sygnalizuje użycie sprawdzania wartości null (== null lub is null) zamiast operatora łączenia wartości null (??).

Opcje

Opcje określają zachowanie, które ma być wymuszane przez regułę. Aby uzyskać informacje na temat konfigurowania opcji, zobacz Format opcji.

dotnet_style_coalesce_expression

Własność Wartość Opis
nazwa opcji dotnet_style_coalesce_expression
Wartości Opcji true Preferuj wyrażenia łączenia wartości null.
false Wyłącza regułę.
domyślna wartość opcji true

Przykłady

IDE0029 i 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

Pomijanie ostrzeżenia

Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji .

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

Aby wyłączyć wszystkie reguły stylu kodu, ustaw poziom ważności dla kategorii Style na none w pliku konfiguracji .

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.

Zobacz też