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łasność | Wartość |
---|---|
Identyfikator Reguły | IDE0029 |
Tytuł | Sprawdzanie wartości null można uprościć (trójargumentowe sprawdzanie warunkowe) |
Kategoria | Styl |
Podkategoria | Reguły języka (preferencje na poziomie wyrażenia) |
obowiązujące języki | C# i Visual Basic |
Opcje | dotnet_style_coalesce_expression |
Własność | Wartość |
---|---|
identyfikator reguły | IDE0030 |
Tytuł | Sprawdzanie wartości null można uprościć (warunkowy operator trójargumentowy z obsługą null) |
Kategoria | Styl |
podkategorii | Reguły języka (preferencje na poziomie wyrażenia) |
Stosowne języki | C# i Visual Basic |
opcje | dotnet_style_coalesce_expression |
Własność | Wartość |
---|---|
ID reguły | IDE0270 |
Tytuł | Sprawdzenie wartości null można uprościć (jeśli null) |
Kategoria | Styl |
podkategorii | Reguły języka (preferencje na poziomie wyrażenia) |
Stosowane języki | C# i Visual Basic |
opcje | dotnet_style_coalesce_expression |
Przegląd
Reguły IDE0029 i IDE0030 dotyczą wykorzystania wyrażeń łączenia wartości null, takich jak , na przykład x ?? y
, w przeciwieństwie do wyrażeń warunkowych z kontrolą null
, na przykład x != null ? x : y
. Reguły różnią się w zależności od dopuszczalności wartości null dla wyrażeń.
-
IDE0029
: używane, gdy są używane wyrażenia niepuste. Na przykład ta reguła może zalecićx ?? y
zamiastx != null ? x : y
, gdyx
iy
są nie-nullowymi typami odwołań. -
IDE0030
: używane, gdy występują wyrażenia nullowalne. Na przykład ta reguła może zalecićx ?? y
zamiastx != null ? x : y
, gdyx
iy
są typów wartości dopuszczanych do wartości null lub typów odwołań dopuszczanych do wartości null.
Reguła IDE0270 sygnalizuje 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łasność | Wartość | Opis |
---|---|---|
nazwa opcji | dotnet_style_coalesce_expression | |
Wartości Opcji | true |
Preferuj wyrażenia łączenia wartości null. |
false |
Wyłącza regułę. | |
domyślna wartość opcji | 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 poziom ważności dla 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.