Sprawdzanie wartości null można uprościć (IDE0029, IDE0030 i IDE0270)
W tym artykule opisano trzy powiązane reguły, IDE0029
, IDE0030
i IDE0270
.
Właściwość | Wartość |
---|---|
Identyfikator zasady | IDE0029 |
Tytuł | Sprawdzanie o wartości null można uprościć (trójargumentowe sprawdzanie warunkowe) |
Kategoria | Styl |
Subcategory (Podkategoria) | Reguły języka (preferencje na poziomie wyrażeń) |
Odpowiednie języki | C# i Visual Basic |
Opcje | dotnet_style_coalesce_expression |
Właściwość | Wartość |
---|---|
Identyfikator zasady | IDE0030 |
Tytuł | Sprawdzanie wartości null można uprościć (sprawdzanie warunkowe z możliwością wartości null) |
Kategoria | Styl |
Subcategory (Podkategoria) | Reguły języka (preferencje na poziomie wyrażeń) |
Odpowiednie języki | C# i Visual Basic |
Opcje | dotnet_style_coalesce_expression |
Właściwość | Wartość |
---|---|
Identyfikator zasady | IDE0270 |
Tytuł | Sprawdzanie wartości null można uprościć (jeśli sprawdzanie wartości null) |
Kategoria | Styl |
Subcategory (Podkategoria) | Reguły języka (preferencje na poziomie wyrażeń) |
Odpowiednie języki | C# i Visual Basic |
Opcje | dotnet_style_coalesce_expression |
Omówienie
Reguły IDE0029 i IDE0030 dotyczą użycia wyrażeń łączenia wartości null, na przykład , a wyrażeń warunkowychternary z kontrolaminull
, na przykład x ?? y
x != null ? x : y
. Reguły różnią się w odniesieniu do wartości null wyrażeń:
IDE0029
: używane, gdy są zaangażowane wyrażenia niezwiązane z wartością null. Na przykład ta reguła może być zalecanax != null ? x : y
x ?? y
zamiast tego, kiedyx
iy
są niepustymi typami referencyjnymi.IDE0030
: używane, gdy są używane wyrażenia dopuszczane do wartości null. Na przykład ta reguła może być zalecanax ?? y
x != null ? x : y
zamiast tego, kiedyx
iy
są typami wartości null lub typami referencyjnymi dopuszczanymi do wartości null.
Reguła IDE0270 flaguje użycie sprawdzania wartości null (== null
lub is null
) zamiast operatora łączenia wartości null (??
).
Opcje
Opcje określają zachowanie, które ma być wymuszane przez regułę. Aby uzyskać informacje na temat konfigurowania opcji, zobacz Format opcji.
dotnet_style_coalesce_expression
Właściwość | Wartość | Opis |
---|---|---|
Nazwa opcji | dotnet_style_coalesce_expression | |
Wartości opcji | true |
Preferuj wyrażenia łączenia wartości null. |
false |
Wyłącza regułę. | |
Wartość opcji domyślnej | true |
Przykłady
IDE0029 i 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
Pomijanie ostrzeżenia
Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#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
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Aby wyłączyć wszystkie reguły stylu kodu, ustaw ważność kategorii Style
na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.