A verificação de nulidade pode ser simplificada (IDE0029, IDE0030 e IDE0270)

Este artigo descreve três regras relacionadas, IDE0029, IDE0030, e IDE0270.

Propriedade Valor
ID da regra IDE0029
Título A verificação de nulidade pode ser simplificada (marcar condicional ternário)
Categoria Estilo
Subcategoria Regras de linguagem (preferências no nível de expressão)
Linguagens aplicáveis C# e Visual Basic
Opções dotnet_style_coalesce_expression
Propriedade Valor
ID da regra IDE0030
Título A verificação de nulidade pode ser simplificada (marcar condicional ternário anulável)
Categoria Estilo
Subcategoria Regras de linguagem (preferências no nível de expressão)
Linguagens aplicáveis C# e Visual Basic
Opções dotnet_style_coalesce_expression
Propriedade Valor
ID da regra IDE0270
Título A verificação de nulidade pode ser simplificada (se houver verificação de nulidade)
Categoria Estilo
Subcategoria Regras de linguagem (preferências no nível de expressão)
Linguagens aplicáveis C# e Visual Basic
Opções dotnet_style_coalesce_expression

Visão geral

As regras IDE0029 e IDE0030 referem-se ao uso de expressões de coalescência nula, por exemplo, x ?? y, versus expressões condicionais ternárias com verificações de null, por exemplo, x != null ? x : y. As regras diferem em relação à anulabilidade das expressões:

  • IDE0029: Usado quando expressões não anuláveis estão envolvidas. Por exemplo, esta regra pode recomendar x ?? y em vez de x != null ? x : y quando x e y são tipos de referência não anuláveis.
  • IDE0030: usado quando expressões anuláveis estão envolvidas. Por exemplo, esta regra pode recomendar x ?? y em vez de x != null ? x : y quando x e y são tipos de valor anuláveis ou tipos de referência anuláveis.

A regra IDE0270 sinaliza o uso de uma verificação de nulidade (== null ou is null) em vez do operador de coalescência nula (??).

Opções

As opções especificam o comportamento que você quer que a regra imponha. Para obter informações sobre como configurar as opções, confira Formato da opção.

dotnet_style_coalesce_expression

Propriedade Valor Descrição
Nome da opção dotnet_style_coalesce_expression
Valores da opção true Prefira expressões de coalescência nula.
false Desabilita a regra.
Valor da opção padrão true

Exemplos

IDE0029 e 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

Suprimir um aviso

Se você quiser suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite a regra.

#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

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none

Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Confira também