Kontrola null může být zjednodušená (IDE0029, IDE0030 a IDE0270).
Tento článek popisuje tři související pravidla, IDE0029
, IDE0030
a IDE0270
.
Vlastnost | Hodnota |
---|---|
ID pravidla | IDE0029 |
název | Kontrola null může být zjednodušená (ternární podmíněná kontrola) |
kategorie | Styl |
podkategorie | Jazyková pravidla (předvolby na úrovni výrazu) |
příslušné jazyky | C# a Visual Basic |
Možnosti | dotnet_style_coalesce_expression |
Vlastnost | Hodnota |
---|---|
ID pravidla | IDE0030 |
název | Kontrolu null lze zjednodušit (podmíněná kontrola pomocí nulovatelné trojité podmínky) |
Kategorie | Styl |
podkategorie | Jazyková pravidla (předvolby na úrovni výrazu) |
příslušné jazyky | C# a Visual Basic |
Možnosti | dotnet_style_coalesce_expression |
Vlastnost | Hodnota |
---|---|
ID pravidla | IDE0270 |
název | Kontrolu null je možné zjednodušit (pokud je kontrola null). |
Kategorie | Styl |
podkategorie | Jazyková pravidla (předvolby na úrovni výrazu) |
příslušné jazyky | C# a Visual Basic |
Možnosti | dotnet_style_coalesce_expression |
Přehled
Pravidla IDE0029 a IDE0030 se týkají použití výrazů , například x ?? y
, proti ternárním podmíněným výrazům s kontrolami null
, například x != null ? x : y
. Pravidla se liší podle nulovatelnosti výrazů:
-
IDE0029
: Používá se, když jsou zahrnuté výrazy, které nemají hodnotu null. Toto pravidlo může například doporučitx ?? y
místox != null ? x : y
, kdyžx
ay
jsou neudržitelné referenční typy. -
IDE0030
: Používá se, když jsou zahrnuty nulovatelné výrazy. Toto pravidlo může například doporučitx ?? y
místox != null ? x : y
, pokudx
ay
jsou nulovatelné hodnotové typy nebo nulovatelné referenční typy .
Pravidlo IDE0270 označuje použití kontroly null (== null
nebo is null
) místo operátoru null-coalescing (??
).
Volby
Možnosti určují chování, které má pravidlo vynutit. Informace o konfiguraci možností naleznete v tématu Formát možnosti.
dotnet_style_coalesce_expression
Vlastnost | Hodnota | Popis |
---|---|---|
název možnosti | dotnet_style_coalesce_expression | |
hodnoty možností | true |
Upřednostněte výrazy nulového shodování. |
false |
Deaktivuje pravidlo. | |
výchozí hodnota možnosti | true |
Příklady
IDE0029 a 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
Potlačení upozornění
Pokud chcete potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#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
Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none
v konfiguračním souboru .
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Chcete-li zakázat všechna pravidla stylu kódu, nastavte závažnost pro kategorii Style
na none
v konfiguračním souboru .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.