Compartir a través de


La comprobación nula se puede simplificar (IDE0029, IDE0030 y IDE0270)

En este artículo se describen tres reglas relacionadas, IDE0029, IDE0030y IDE0270.

Propiedad Valor
Identificador de la regla IDE0029
Título La comprobación nula se puede simplificar (comprobación condicional ternaria)
Categoría Estilo
Subcategoría Reglas de lenguaje (preferencias de nivel de expresión)
idiomas aplicables C# y Visual Basic
Opciones dotnet_style_coalesce_expression
Propiedad Valor
Identificador de la regla IDE0030
Título La comprobación de valores null se puede simplificar (comprobación condicional ternaria que acepta valores null)
Categoría Estilo
subcategoría Reglas de lenguaje (preferencias de nivel de expresión)
idiomas aplicables C# y Visual Basic
Opciones dotnet_style_coalesce_expression
Propiedad Valor
Identificador de la regla IDE0270
Título La comprobación de valores null se puede simplificar (si la comprobación es nula)
Categoría Estilo
Subcategoría Reglas de lenguaje (preferencias de nivel de expresión)
idiomas aplicables C# y Visual Basic
Opciones dotnet_style_coalesce_expression

Visión general

Las reglas IDE0029 y IDE0030 se refieren al uso de expresiones de fusión null, por ejemplo, x ?? y, frente a expresiones condicionales ternarias con comprobaciones null, por ejemplo, x != null ? x : y. Las reglas difieren con respecto a la nulabilidad de las expresiones:

  • IDE0029: se usa cuando hay expresiones que no aceptan valores NULL. Por ejemplo, esta regla podría recomendar x ?? y en lugar de x != null ? x : y cuando x y y son tipos de referencia que no aceptan valores NULL.
  • IDE0030: se usa cuando intervienen expresiones que aceptan valores NULL. Por ejemplo, esta regla podría recomendar x ?? y en lugar de x != null ? x : y cuando x y y son tipos de valor nulos o tipos de referencia nulos .

La regla IDE0270 marca el uso de una comprobación de valores null (== null o is null) en lugar del operador de fusión de NULL (??).

Opciones

Las opciones especifican el comportamiento que desea que aplique la regla. Para obtener información sobre cómo configurar opciones, vea Formato de opción.

dotnet_style_coalesce_expression

Propiedad Valor Descripción
nombre de opción dotnet_style_coalesce_expression
Valores de opción true Se prefieren expresiones de fusión de null.
false Deshabilita la regla.
valor de opción predeterminado true

Ejemplos

IDE0029 y 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 una advertencia

Si desea suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

#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 deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none en el archivo de configuración de .

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

Para deshabilitar todas las reglas de estilo de código, establezca la gravedad de la categoría Style a none en el archivo de configuración .

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

Para obtener más información, vea Cómo suprimir advertencias de análisis de código.

Consulte también