Null denetim basitleştirilebilir (IDE0029, IDE0030 ve IDE0270)

Bu makalede, , IDE0030ve IDE0270ile ilgili üç kural IDE0029açıklanmaktadır.

Özellik Değer
Kural Kimliği IDE0029
Başlık Null denetim basitleştirilmiş olabilir (üçüncül koşullu denetim)
Kategori Stil
Alt Kategori Dil kuralları (ifade düzeyi tercihleri)
Geçerli diller C# ve Visual Basic
Seçenekler dotnet_style_coalesce_expression
Özellik Değer
Kural Kimliği IDE0030
Başlık Null denetim basitleştirilmiş olabilir (null atanabilir üçüncül koşullu denetim)
Kategori Stil
Alt Kategori Dil kuralları (ifade düzeyi tercihleri)
Geçerli diller C# ve Visual Basic
Seçenekler dotnet_style_coalesce_expression
Özellik Değer
Kural Kimliği IDE0270
Başlık Null denetim basitleştirilmiş olabilir (null denetimi varsa)
Kategori Stil
Alt Kategori Dil kuralları (ifade düzeyi tercihleri)
Geçerli diller C# ve Visual Basic
Seçenekler dotnet_style_coalesce_expression

Genel Bakış

Kurallar IDE0029 ve IDE0030, null birleşim ifadelerinin (örneğin, x ?? y) ve denetimleri olan üçüncül koşullu ifadelerin kullanımıyla null ilgilidir. Örneğin, x != null ? x : y. Kurallar ifadelerin null atanabilirliğine göre farklılık gösterir:

  • IDE0029: Null atanamayan ifadeler söz konusu olduğunda kullanılır. Örneğin, bu kural ne zaman x ve y boş değer atanamaz başvuru türleri yerine x != null ? x : y önerebilirx ?? y.
  • IDE0030: Null atanabilir ifadeler söz konusu olduğunda kullanılır. Örneğin, bu kural ne zaman ve değerlerinin null atanabilir değer türleri veya null atanabilir başvuru türleri yerine önerebilirx ?? y.x != null ? x : yyx

Kural IDE0270, null birleşim işleci?? ( ) yerine null denetimin (== null veya is null) kullanımını işaretler.

Seçenekler

Seçenekler, kuralın zorlamasını istediğiniz davranışı belirtir. Seçenekleri yapılandırma hakkında bilgi için bkz. Seçenek biçimi.

dotnet_style_coalesce_expression

Özellik Değer Açıklama
Seçenek adı dotnet_style_coalesce_expression
Seçenek değerleri true Null birleşim ifadelerini tercih edin.
false Kuralı devre dışı bırakır.
Varsayılan seçenek değeri true

Örnekler

IDE0029 ve 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

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza önişlemci yönergeleri ekleyin.

#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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none olarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none

Kod stili kuralların tümünü devre dışı bırakmak için Stylenone, kategorinin önem derecesini yapılandırma dosyasında olarak ayarlayın.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.

Ayrıca bkz.