Kontrolu hodnoty null lze zjednodušit (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 hodnoty Null může být zjednodušená (ternární podmíněná kontrola). |
Kategorie | Styl |
Subcategory | Pravidla jazyka (předvolby na úrovni výrazů) |
Příslušné jazyky | C# a Visual Basic |
Možnosti | dotnet_style_coalesce_expression |
Vlastnost | Hodnota |
---|---|
ID pravidla | IDE0030 |
Název | Kontrola hodnoty Null může být zjednodušená (ternární podmíněná kontrola s možnou hodnotou null). |
Kategorie | Styl |
Subcategory | Pravidla jazyka (předvolby na úrovni výrazů) |
Příslušné jazyky | C# a Visual Basic |
Možnosti | dotnet_style_coalesce_expression |
Vlastnost | Hodnota |
---|---|
ID pravidla | IDE0270 |
Název | Kontrola hodnoty Null může být zjednodušena (pokud kontrola hodnoty null) |
Kategorie | Styl |
Subcategory | Pravidla jazyka (předvolby na úrovni výrazů) |
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ů s hodnotou null, například x ?? y
, a ternárních podmíněných výrazů s kontrolami null
, x != null ? x : y
například . Pravidla se liší s ohledem na nullability výrazů:
IDE0029
: Používá se při použití výrazů, které nemají hodnotu null. Toto pravidlo může například doporučitx ?? y
místo toho, kdyx
ay
nejsou typu odkazu s možnoux != null ? x : y
hodnotou null.IDE0030
: Používá se při použití výrazů s možnou hodnotou null. Toto pravidlo by například mohlo místo hodnotových typů sy
možnou hodnotou null nebo odkazových typů s možnoux != null ? x : y
x
hodnotou null doporučitx ?? y
.
Pravidlo IDE0270 označuje použití kontroly null (== null
nebo is null
) místo operátoru sloučování null (??
).
Možnosti
Možnosti určují chování, které má pravidlo vynucovat. Informace o konfiguraci možností najdete 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 s nulou. |
false |
Zakáže 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, aby se pravidlo zakázalo a znovu povolte.
#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
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost none
na v konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Pokud chcete zakázat všechna pravidla stylu kódu, nastavte v konfiguračním souboru závažnost kategorie Style
na none
.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Další informace najdete v tématu Jak potlačit upozornění analýzy kódu.