Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden drie gerelateerde regels, IDE0029, IDE0030en IDE0270beschreven.
| 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 (nullable drietandige voorwaardelijke controle) | 
| categorie | Stijl | 
| Subcategorie | Taalregels (voorkeuren op expressieniveau) | 
| Toepasselijke talen | C# en Visual Basic | 
| opties | dotnet_style_coalesce_expression | 
| Eigendom | 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, bijvoorbeeld x ?? y, versus ternaire voorwaardelijke expressies met null controles, bijvoorbeeld x != null ? x : y. De regels verschillen met betrekking tot de null-baarheid van de expressies:
- 
              
IDE0029: wordt gebruikt bij niet-nullbare expressies. Deze regel kan bijvoorbeeldx ?? yaanbevelen in plaats vanx != null ? x : ywanneerxenyniet-null-referentietypen zijn. - 
              
IDE0030: wordt gebruikt wanneer null-expressies betrokken zijn. Deze regel kan bijvoorbeeldx ?? yaanbevelen in plaats vanx != null ? x : ywanneerxenytypen null-waarden zijn of null-verwijzingstypen. 
Regel IDE0270 markeert het gebruik van een null-controle (== null of is null) in plaats van de operator null-coalescing (??).
Opties
Met opties geeft u het gedrag op dat door de regel moet worden afgedwongen. Zie Option-indelingvoor 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 null-coalescing-expressies. | 
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 preprocessorrichtlijnen toe aan uw 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 ervan 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 regels voor de codestijl 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
Voor meer informatie, zie Hoe u codeanalysewaarschuwingen kunt onderdrukken.