Anteckning
Å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.