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 recomendarx ?? y
em vez dex != null ? x : y
quandox
ey
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 recomendarx ?? y
em vez dex != null ? x : y
quandox
ey
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.