Share via


Null-controle kan worden vereenvoudigd (IDE0029, IDE0030 en IDE0270)

In dit artikel worden drie gerelateerde regels beschreven, IDE0029, IDE0030en IDE0270.

Eigenschap Waarde
Regel-id IDE0029
Titel Null-controle kan worden vereenvoudigd (ternaire voorwaardelijke controle)
Categorie Stijl
Subcategorie Taalregels (voorkeuren op expressieniveau)
Toepasselijke talen C# en Visual Basic
Opties dotnet_style_coalesce_expression
Eigenschap Waarde
Regel-id IDE0030
Titel Null-controle kan worden vereenvoudigd (voorwaardelijke controle op null-ternair)
Categorie Stijl
Subcategorie Taalregels (voorkeuren op expressieniveau)
Toepasselijke talen C# en Visual Basic
Opties dotnet_style_coalesce_expression
Eigenschap Waarde
Regel-id IDE0270
Titel Null-controle kan worden vereenvoudigd (indien null-controle)
Categorie Stijl
Subcategorie Taalregels (voorkeuren op expressieniveau)
Toepasselijke talen C# en Visual Basic
Opties dotnet_style_coalesce_expression

Overzicht

Regels IDE0029 en IDE0030 hebben betrekking op het gebruik van null-coalescing-expressies, x ?? ybijvoorbeeld , versus ternaire voorwaardelijke expressies met null controles, x != null ? x : ybijvoorbeeld . De regels verschillen met betrekking tot de null-bruikbaarheid van de expressies:

  • IDE0029: wordt gebruikt wanneer expressies die niet null kunnen worden gebruikt. Deze regel kan bijvoorbeeld aanbevelingen doen x ?? y in plaats van x != null ? x : y wanneer x en y niet-null-referentietypen zijn.
  • IDE0030: Wordt gebruikt wanneer er null-expressies bij betrokken zijn. Deze regel kan bijvoorbeeld aanbevelingen doen x ?? y in plaats van x != null ? x : y wanneer x en ynull-waardetypen of verwijzingstypen zijn waarvoor null kan worden gebruikt.

Regel IDE0270 markeert het gebruik van een null-controle (== null of is null) in plaats van de operator null-coalescing (??).

Opties

Met opties wordt het gedrag opgegeven dat door de regel moet worden afgedwongen. Zie Optie-indeling voor meer informatie over het configureren van opties.

dotnet_style_coalesce_expression

Eigenschap Waarde Beschrijving
Optienaam dotnet_style_coalesce_expression
Optiewaarden true Geef de voorkeur aan expressies voor null-coalescing.
false Hiermee schakelt u de regel uit.
Standaardoptiewaarde true

Voorbeelden

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

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessor-instructies toe aan het bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst in op none in het configuratiebestand.

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

Als u alle codestijlregels wilt uitschakelen, stelt u de ernst voor de categorie Style in op none in het configuratiebestand.

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

Zie Waarschuwingen voor codeanalyse onderdrukken voor meer informatie.

Zie ook