Проверка null можно упростить (IDE0029, IDE0030 и IDE0270).
В этой статье описываются три связанных правила: IDE0029
, IDE0030
и IDE0270
.
Свойство | Значение |
---|---|
Идентификатор правила | IDE0029 |
Заголовок | Можно упростить проверка NULL (тернарное условное проверка) |
Категория | Стиль |
Подкатегория | Правила языка (настройки уровня выражения) |
Применимые языки | C# и Visual Basic |
Параметры | dotnet_style_coalesce_expression |
Свойство | Значение |
---|---|
Идентификатор правила | IDE0030 |
Заголовок | Проверка null можно упростить (тернарное условное проверка, допускающее значение NULL) |
Категория | Стиль |
Подкатегория | Правила языка (настройки уровня выражения) |
Применимые языки | C# и Visual Basic |
Параметры | dotnet_style_coalesce_expression |
Свойство | Значение |
---|---|
Идентификатор правила | IDE0270 |
Заголовок | Проверка null можно упростить (если проверка null) |
Категория | Стиль |
Подкатегория | Правила языка (настройки уровня выражения) |
Применимые языки | C# и Visual Basic |
Параметры | dotnet_style_coalesce_expression |
Общие сведения
Правила IDE0029 и IDE0030 касаются использования выражений объединения со значением NULL, например , x ?? y
и тернарных условных выражений с проверкамиnull
, например x != null ? x : y
. Правила различаются в отношении допустимости значений NULL выражений:
IDE0029
: используется при использовании выражений, не допускающих значение NULL. Например, это правило может рекомендоватьx ?? y
вместо того, когдаx
иy
являются ссылочнымиx != null ? x : y
типами, не допускаемыми значения NULL.IDE0030
: используется при использовании выражений, допускающих значение NULL. Например, это правило может рекомендоватьx ?? y
вместо того, когдаx
иy
являются типами значений, допускающих значение NULL, или ссылочными типами, допускаемыми значением NULL.x != null ? x : y
Правило IDE0270 помечает использование null проверка (== null
или is null
) вместо оператора объединения со значением NULL (??
).
Варианты
Параметры определяют поведение, которое требуется применить правилом. Сведения о настройке параметров см. в разделе Формат параметров.
dotnet_style_coalesce_expression
Свойство | Значение | Описание |
---|---|---|
Имя параметра | dotnet_style_coalesce_expression | |
Значения параметра | true |
Предпочитать выражения объединения со значением NULL. |
false |
Отключает проблемное правило. | |
Значение параметра по умолчанию | true |
Примеры
IDE0029 и 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
Отключение предупреждений
Если вы хотите отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и снова включить правило.
#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
Чтобы отключить правило для файла, папки или проекта, присвойте ей значение серьезности none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Чтобы отключить все правила в стиле кода, задайте серьезность для категории Style
none
в файле конфигурации.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.