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łaściwość Wartość
Identyfikator zasady IDE0029
Tytuł Sprawdzanie o wartości null można uprościć (trójargumentowe sprawdzanie warunkowe)
Kategoria Styl
Subcategory (Podkategoria) Reguły języka (preferencje na poziomie wyrażeń)
Odpowiednie języki C# i Visual Basic
Opcje dotnet_style_coalesce_expression
Właściwość Wartość
Identyfikator zasady IDE0030
Tytuł Sprawdzanie wartości null można uprościć (sprawdzanie warunkowe z możliwością wartości null)
Kategoria Styl
Subcategory (Podkategoria) Reguły języka (preferencje na poziomie wyrażeń)
Odpowiednie języki C# i Visual Basic
Opcje dotnet_style_coalesce_expression
Właściwość Wartość
Identyfikator zasady IDE0270
Tytuł Sprawdzanie wartości null można uprościć (jeśli sprawdzanie wartości null)
Kategoria Styl
Subcategory (Podkategoria) Reguły języka (preferencje na poziomie wyrażeń)
Odpowiednie języki C# i Visual Basic
Opcje dotnet_style_coalesce_expression

Omówienie

Reguły IDE0029 i IDE0030 dotyczą użycia wyrażeń łączenia wartości null, na przykład , a wyrażeń warunkowychternary z kontrolaminull, na przykład x ?? yx != null ? x : y. Reguły różnią się w odniesieniu do wartości null wyrażeń:

  • IDE0029: używane, gdy są zaangażowane wyrażenia niezwiązane z wartością null. Na przykład ta reguła może być zalecana x != null ? x : yx ?? y zamiast tego, kiedy x i y są niepustymi typami referencyjnymi.
  • IDE0030: używane, gdy są używane wyrażenia dopuszczane do wartości null. Na przykład ta reguła może być zalecana x ?? yx != null ? x : y zamiast tego, kiedy x i ytypami wartości null lub typami referencyjnymi dopuszczanymi do wartości null.

Reguła IDE0270 flaguje 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łaściwość Wartość Opis
Nazwa opcji dotnet_style_coalesce_expression
Wartości opcji true Preferuj wyrażenia łączenia wartości null.
false Wyłącza regułę.
Wartość opcji domyślnej 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 ważność 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ż