Sdílet prostřednictvím


Kontrolu hodnoty null lze zjednodušit (IDE0029, IDE0030 a IDE0270).

Tento článek popisuje tři související pravidla, IDE0029, IDE0030a IDE0270.

Vlastnost Hodnota
ID pravidla IDE0029
Název Kontrola hodnoty Null může být zjednodušená (ternární podmíněná kontrola).
Kategorie Styl
Subcategory Pravidla jazyka (předvolby na úrovni výrazů)
Příslušné jazyky C# a Visual Basic
Možnosti dotnet_style_coalesce_expression
Vlastnost Hodnota
ID pravidla IDE0030
Název Kontrola hodnoty Null může být zjednodušená (ternární podmíněná kontrola s možnou hodnotou null).
Kategorie Styl
Subcategory Pravidla jazyka (předvolby na úrovni výrazů)
Příslušné jazyky C# a Visual Basic
Možnosti dotnet_style_coalesce_expression
Vlastnost Hodnota
ID pravidla IDE0270
Název Kontrola hodnoty Null může být zjednodušena (pokud kontrola hodnoty null)
Kategorie Styl
Subcategory Pravidla jazyka (předvolby na úrovni výrazů)
Příslušné jazyky C# a Visual Basic
Možnosti dotnet_style_coalesce_expression

Přehled

Pravidla IDE0029 a IDE0030 se týkají použití výrazů s hodnotou null, například x ?? y, a ternárních podmíněných výrazů s kontrolami null , x != null ? x : ynapříklad . Pravidla se liší s ohledem na nullability výrazů:

  • IDE0029: Používá se při použití výrazů, které nemají hodnotu null. Toto pravidlo může například doporučit x ?? y místo toho, kdy x a y nejsou typu odkazu s možnou x != null ? x : y hodnotou null.
  • IDE0030: Používá se při použití výrazů s možnou hodnotou null. Toto pravidlo by například mohlo místo hodnotových typů s ymožnou hodnotou null nebo odkazových typů s možnoux != null ? x : yx hodnotou null doporučitx ?? y.

Pravidlo IDE0270 označuje použití kontroly null (== null nebo is null) místo operátoru sloučování null (??).

Možnosti

Možnosti určují chování, které má pravidlo vynucovat. Informace o konfiguraci možností najdete v tématu Formát možnosti.

dotnet_style_coalesce_expression

Vlastnost Hodnota Popis
Název možnosti dotnet_style_coalesce_expression
Hodnoty možností true Upřednostněte výrazy s nulou.
false Zakáže pravidlo.
Výchozí hodnota možnosti true

Příklady

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

Potlačení upozornění

Pokud chcete potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, aby se pravidlo zakázalo a znovu povolte.

#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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost none na v konfiguračním souboru.

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

Pokud chcete zakázat všechna pravidla stylu kódu, nastavte v konfiguračním souboru závažnost kategorie Style na none .

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

Další informace najdete v tématu Jak potlačit upozornění analýzy kódu.

Viz také