Null-controle kan worden vereenvoudigd (IDE0029, IDE0030 en IDE0270)
In dit artikel worden drie gerelateerde regels beschreven, IDE0029
, IDE0030
en IDE0270
.
Eigenschap | Waarde |
---|---|
Regel-id | IDE0029 |
Titel | Null-controle kan worden vereenvoudigd (ternaire voorwaardelijke controle) |
Categorie | Stijl |
Subcategorie | Taalregels (voorkeuren op expressieniveau) |
Toepasselijke talen | C# en Visual Basic |
Opties | dotnet_style_coalesce_expression |
Eigenschap | Waarde |
---|---|
Regel-id | IDE0030 |
Titel | Null-controle kan worden vereenvoudigd (voorwaardelijke controle op null-ternair) |
Categorie | Stijl |
Subcategorie | Taalregels (voorkeuren op expressieniveau) |
Toepasselijke talen | C# en Visual Basic |
Opties | dotnet_style_coalesce_expression |
Eigenschap | Waarde |
---|---|
Regel-id | IDE0270 |
Titel | Null-controle kan worden vereenvoudigd (indien null-controle) |
Categorie | Stijl |
Subcategorie | Taalregels (voorkeuren op expressieniveau) |
Toepasselijke talen | C# en Visual Basic |
Opties | dotnet_style_coalesce_expression |
Overzicht
Regels IDE0029 en IDE0030 hebben betrekking op het gebruik van null-coalescing-expressies, x ?? y
bijvoorbeeld , versus ternaire voorwaardelijke expressies met null
controles, x != null ? x : y
bijvoorbeeld . De regels verschillen met betrekking tot de null-bruikbaarheid van de expressies:
IDE0029
: wordt gebruikt wanneer expressies die niet null kunnen worden gebruikt. Deze regel kan bijvoorbeeld aanbevelingen doenx ?? y
in plaats vanx != null ? x : y
wanneerx
eny
niet-null-referentietypen zijn.IDE0030
: Wordt gebruikt wanneer er null-expressies bij betrokken zijn. Deze regel kan bijvoorbeeld aanbevelingen doenx ?? y
in plaats vanx != null ? x : y
wanneerx
eny
null-waardetypen of verwijzingstypen zijn waarvoor null kan worden gebruikt.
Regel IDE0270 markeert het gebruik van een null-controle (== null
of is null
) in plaats van de operator null-coalescing (??
).
Opties
Met opties wordt het gedrag opgegeven dat door de regel moet worden afgedwongen. Zie Optie-indeling voor meer informatie over het configureren van opties.
dotnet_style_coalesce_expression
Eigenschap | Waarde | Beschrijving |
---|---|---|
Optienaam | dotnet_style_coalesce_expression | |
Optiewaarden | true |
Geef de voorkeur aan expressies voor null-coalescing. |
false |
Hiermee schakelt u de regel uit. | |
Standaardoptiewaarde | true |
Voorbeelden
IDE0029 en 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
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessor-instructies toe aan het bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#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
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst in op none
in het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Als u alle codestijlregels wilt uitschakelen, stelt u de ernst voor de categorie Style
in op none
in het configuratiebestand.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Zie Waarschuwingen voor codeanalyse onderdrukken voor meer informatie.