Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются три связанных правила: 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
Чтобы отключить все правила в стиле кода, задайте серьезность для категории Stylenone в файле конфигурации.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.