Il controllo Null può essere semplificato (IDE0029, IDE0030 e IDE0270)
Questo articolo descrive tre regole correlate, , IDE0029
IDE0030
, 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 ?? y
rispetto 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 consigliatax ?? y
anziché quandox
ey
sono tipi dix != null ? x : y
riferimento non nullable.IDE0030
: utilizzato quando sono coinvolte espressioni nullable. Ad esempio, questa regola può essere consigliatax ?? y
invece dix != null ? x : y
quandox
ey
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.