Il controllo Null può essere semplificato (IDE0029, IDE0030 e IDE0270)

Questo articolo descrive tre regole correlate, , IDE0029IDE0030, e IDE0270.

Proprietà Valore
ID regola IDE0029
Titolo Il controllo Null può essere semplificato (controllo condizionale ternario)
Categoria Stile
Subcategory Regole del linguaggio (preferenze a livello di espressione)
Lingue applicabili C# e Visual Basic
Opzioni dotnet_style_coalesce_expression
Proprietà Valore
ID regola IDE0030
Titolo Il controllo Null può essere semplificato (controllo condizionale ternario nullable)
Categoria Stile
Subcategory Regole del linguaggio (preferenze a livello di espressione)
Lingue applicabili C# e Visual Basic
Opzioni dotnet_style_coalesce_expression
Proprietà Valore
ID regola IDE0270
Titolo Il controllo Null può essere semplificato (se il controllo Null)
Categoria Stile
Subcategory Regole del linguaggio (preferenze a livello di espressione)
Lingue applicabili C# e Visual Basic
Opzioni dotnet_style_coalesce_expression

Panoramica

Le regole IDE0029 e IDE0030 riguardano l'uso di espressioni null-coalescing, ad esempio , x ?? yrispetto alle espressioni condizionali ternarie con null controlli, ad esempio x != null ? x : y. Le regole differiscono rispetto all'nullabilità delle espressioni:

  • IDE0029: utilizzato quando sono coinvolte espressioni non nullable. Ad esempio, questa regola può essere consigliata x ?? y anziché quando x e y sono tipi di x != null ? x : y riferimento non nullable.
  • IDE0030: utilizzato quando sono coinvolte espressioni nullable. Ad esempio, questa regola può essere consigliata x ?? y invece di x != null ? x : y quando x e y sono tipi di riferimento nullable o tipi di riferimento nullable.

Regola IDE0270 contrassegna l'uso di un controllo Null (== null o is null) anziché dell'operatore null-coalescing (??).

Opzioni

Le opzioni specificano il comportamento che si vuole applicare la regola. Per informazioni sulla configurazione delle opzioni, vedere Formato opzione.

dotnet_style_coalesce_expression

Proprietà Valore Descrizione
Nome opzione dotnet_style_coalesce_expression
Valori di opzione true Preferisce espressioni null-coalescing.
false Disabilita la regola.
Valore dell'opzione predefinito true

Esempio

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

Eliminare un avviso

Se si vuole eliminare solo una singola violazione, aggiungere direttive di preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#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

Per disabilitare la regola per un file, una cartella o un progetto, impostare la relativa gravità su none nel file di configurazione.

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

Per disabilitare tutte le regole in stile codice, impostare la gravità per la categoria Style su none nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche