Null denetim basitleştirilebilir (IDE0029, IDE0030 ve IDE0270)
Bu makalede, , IDE0030
ve IDE0270
ile ilgili üç kural IDE0029
açı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 zamanx
vey
boş değer atanamaz başvuru türleri yerinex != 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 : y
y
x
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 Style
none
, 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.