Megosztás a következőn keresztül:


A null értékű ellenőrzés egyszerűsíthető (IDE0029, IDE0030 és IDE0270)

Ez a cikk három kapcsolódó szabályt ismertet: IDE0029, IDE0030és IDE0270.

Tulajdonság Érték
Szabályazonosító IDE0029
Cím A null értékű ellenőrzés egyszerűsíthető (ternáris feltételes ellenőrzés)
Kategória Stílus
Alkategória Nyelvi szabályok (kifejezésszintű beállítások)
Alkalmazandó nyelvek C# és Visual Basic
Beállítások dotnet_style_coalesce_expression
Tulajdonság Érték
Szabályazonosító IDE0030
Cím A null értékű ellenőrzés egyszerűsíthető (null értékű ternáris feltételes ellenőrzés)
Kategória Stílus
Alkategória Nyelvi szabályok (kifejezésszintű beállítások)
Alkalmazandó nyelvek C# és Visual Basic
Beállítások dotnet_style_coalesce_expression
Tulajdonság Érték
Szabályazonosító IDE0270
Cím A null értékű ellenőrzés egyszerűsíthető (null értékű ellenőrzés esetén)
Kategória Stílus
Alkategória Nyelvi szabályok (kifejezésszintű beállítások)
Alkalmazandó nyelvek C# és Visual Basic
Beállítások dotnet_style_coalesce_expression

Áttekintés

Az IDE0029 és IDE0030 szabályok a null szén-dioxid-halmazú kifejezések használatára vonatkoznak, x ?? ypéldául , és a ternáris feltételes kifejezésekre, x != null ? x : ypéldául ellenőrzésekkelnull. A szabályok a kifejezések nullázhatósága tekintetében különböznek:

  • IDE0029: Akkor használatos, ha nem null értékű kifejezésekről van szó. Ez a szabály például nem null értékű hivatkozástípusokat javasolhat x ?? y a és a helyett xx != null ? x : yy.
  • IDE0030: Nullértékű kifejezések használata esetén használatos. Ez a szabály például azt javasolhatja x ?? yx != null ? x : y , hogy mikor x és y mikor lehet nullable értéktípus vagy null értékű hivatkozástípus.

Az IDE0270 szabály a null-ellenőrzés (== null vagy is null) használatát jelöli a null-szenesítő operátor (??) helyett.

Beállítások

A beállítások határozzák meg, hogy a szabály milyen viselkedést kényszerítsen ki. További információ a beállítások konfigurálásáról: Beállításformátum.

dotnet_style_coalesce_expression

Tulajdonság Érték Leírás
Beállítás neve dotnet_style_coalesce_expression
Beállításértékek true Előnyben részesítse a null-coalescing kifejezéseket.
false Letiltja a szabályt.
Alapértelmezett beállításérték true

Példák

IDE0029 és 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

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozói irányelveket a forrásfájlhoz a letiltásához, majd engedélyezze újra a szabályt.

#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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

Az összes kódstílus-szabály letiltásához állítsa a kategória Style súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések mellőzése.

Lásd még