Null-kontrollen kan förenklas (IDE0029, IDE0030 och IDE0270)
I den här artikeln beskrivs tre relaterade regler, IDE0029
, IDE0030
och IDE0270
.
Egenskap | Värde |
---|---|
Regel-ID | IDE0029 |
Rubrik | Null-kontrollen kan förenklas (villkorsstyrd kontroll för ternary) |
Kategori | Format |
Underkategori | Språkregler (inställningar på uttrycksnivå) |
Tillämpliga språk | C# och Visual Basic |
Alternativ | dotnet_style_coalesce_expression |
Egenskap | Värde |
---|---|
Regel-ID | IDE0030 |
Rubrik | Null-kontrollen kan förenklas (villkorsstyrd kontroll som kan ha värdet null) |
Kategori | Format |
Underkategori | Språkregler (inställningar på uttrycksnivå) |
Tillämpliga språk | C# och Visual Basic |
Alternativ | dotnet_style_coalesce_expression |
Egenskap | Värde |
---|---|
Regel-ID | IDE0270 |
Rubrik | Null-kontroll kan förenklas (om null-kontroll) |
Kategori | Format |
Underkategori | Språkregler (inställningar på uttrycksnivå) |
Tillämpliga språk | C# och Visual Basic |
Alternativ | dotnet_style_coalesce_expression |
Översikt
Reglerna IDE0029 och IDE0030 gäller användning av null-sammanskringsuttryck, x ?? y
till exempel , jämfört med ternary-villkorsuttryck med null
kontroller, x != null ? x : y
till exempel . Reglerna skiljer sig åt när det gäller nullbarheten för uttrycken:
IDE0029
: Används när uttryck som inte kan ha värdet null är inblandade. Den här regeln kan till exempel rekommenderax ?? y
i stället förx != null ? x : y
närx
ochy
inte är nullbara referenstyper.IDE0030
: Används när nullbara uttryck är inblandade. Den här regeln kan till exempel rekommenderax ?? y
i stället förx != null ? x : y
närx
ochy
är nullbara värdetyper eller referenstyper som kan ha värdet null.
Regel IDE0270 flaggar användningen av en null-kontroll (== null
eller is null
) i stället för operatorn null-coalescing (??
).
Alternativ
Alternativ anger det beteende som du vill att regeln ska framtvinga. Information om hur du konfigurerar alternativ finns i Alternativformat.
dotnet_style_coalesce_expression
Egenskap | Värde | Beskrivning |
---|---|---|
Alternativnamn | dotnet_style_coalesce_expression | |
Alternativvärden | true |
Föredrar null-sammankopplingsuttryck. |
false |
Inaktiverar regeln. | |
Standardalternativvärde | true |
Exempel
IDE0029 och 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
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till preprocessor-direktiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#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
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Om du vill inaktivera alla regler i kodstil anger du allvarlighetsgraden för kategorin Style
till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.