Condividi tramite


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

Questo articolo descrive tre regole correlate, IDE0029, IDE0030e IDE0270.

Proprietà Valore
Regola ID IDE0029
titolo Il controllo Null può essere semplificato (controllo condizionale ternario)
categoria Stile
sottocategoria 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 annullabile)
categoria Stile
sottocategoria Regole del linguaggio (preferenze a livello di espressione)
lingue applicabili C# e Visual Basic
Opzioni dotnet_style_coalesce_expression
Proprietà Valore
Identificativo regola IDE0270
Titolo Il controllo nullo può essere semplificato (se verifica di null)
Categoria Stile
sottocategoria 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 di unione null, ad esempio x ?? y, rispetto alle espressioni condizionali ternarie con controlli di null, ad esempio x != null ? x : y. Le regole differiscono rispetto alla nullabilità delle espressioni:

  • IDE0029: Usato quando sono coinvolte espressioni non annullabili. Ad esempio, questa regola potrebbe consigliare x ?? y anziché x != null ? x : y quando x e y sono tipi di riferimento non annullabili.
  • IDE0030: usato quando sono coinvolte le espressioni nullabili. Ad esempio, questa regola potrebbe consigliare x ?? y anziché x != null ? x : y quando x e y sono tipi valore nullable o tipi riferimento nullable.

La regola IDE0270 contrassegna l'uso di un controllo null (== null o is null) anziché dell'operatore di coalescenza null (??).

Opzioni

Le opzioni specificano il comportamento che vuoi che la regola applica. Per informazioni sulla configurazione delle opzioni, vedere Formato opzione.

dotnet_style_coalesce_expression

Proprietà Valore Descrizione
nome opzione dotnet_style_coalesce_expression
valori delle opzioni true Preferire le espressioni di coalescenza dei valori nulli.
false Disabilita la regola.
valore di opzione predefinito true

Esempi

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 desidera eliminare solo una singola violazione, aggiungere direttive del 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, impostarne la 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 di tipo 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.

Vedere anche