Språk
Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln beskrivs tre relaterade regler, IDE0029, IDE0030och IDE0270.
| Egenskap | Värde |
|---|---|
| Regel-ID | IDE0029 |
| rubrik | Nullkontroll kan förenklas (ternär villkorskontroll) |
| kategori | Stil |
| 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 (villkorlig kontroll som kan ogiltigförklaras) |
| Kategori | Stil |
| 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 | Stil |
| underkategori | Språkregler (inställningar på uttrycksnivå) |
| Tillämpliga språk | C# och Visual Basic |
| alternativ | dotnet_style_coalesce_expression |
Överblick
Regler IDE0029 och IDE0030 gäller användningen av null-sammanslagning uttryck, till exempel x ?? y, jämfört med ternära villkorsuttryck med null kontroller, till exempel x != null ? x : y. Reglerna skiljer sig åt när det gäller nullbarheten för uttrycken:
-
IDE0029: Används när icke-nullbara uttryck ingår. Den här regeln kan till exempel rekommenderax ?? yi stället förx != null ? x : ynärxochyinte är nullbara referenstyper. -
IDE0030: Används när nullbara uttryck ingår. Den här regeln kan till exempel rekommenderax ?? yi stället förx != null ? x : ynärxochyär nullbara värdetyper eller nullbara referenstyper.
Regeln IDE0270 flaggar användningen av en nullkontroll (== null eller is null) i stället för null-coalescingoperatorn (??).
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öredra 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 förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.
#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 kodformat 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.