Il controllo Null può essere semplificato (IDE0029, IDE0030 e IDE0270)
Questo articolo descrive tre regole correlate, IDE0029
, IDE0030
e 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 consigliarex ?? y
anzichéx != null ? x : y
quandox
ey
sono tipi di riferimento non annullabili. -
IDE0030
: usato quando sono coinvolte le espressioni nullabili. Ad esempio, questa regola potrebbe consigliarex ?? y
anzichéx != null ? x : y
quandox
ey
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.