La comprobación de valores null se puede simplificar (IDE0029, IDE0030 e IDE0270)
En este artículo se describen tres reglas relacionadas, IDE0029
, IDE0030
y IDE0270
.
Propiedad | Valor |
---|---|
Identificador de la regla | IDE0029 |
Título | La comprobación de valores null se puede simplificar (comprobación condicional ternaria) |
Categoría | Estilo |
Subcategoría | Reglas del lenguaje (preferencias de nivel de expresión) |
Lenguajes 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 del lenguaje (preferencias de nivel de expresión) |
Lenguajes 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 del lenguaje (preferencias de nivel de expresión) |
Lenguajes aplicables | C# y Visual Basic |
Opciones | dotnet_style_coalesce_expression |
Informació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 existen expresiones que no aceptan valores NULL. Por ejemplo,esta regla podría recomendarx ?? y
en lugar dex != null ? x : y
cuandox
yy
son tipos de referencia que no aceptan valores NULL.IDE0030
: se usa cuando existen expresiones que aceptan valores NULL. Por ejemplo, esta regla podría recomendarx ?? y
en lugar dex != null ? x : y
cuandox
yy
son tipos de valor que aceptan valores NULL o tipos de referencia que aceptan valores NULL.
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 se quiere que aplique la regla. Para más información sobre cómo configurar opciones, consulte Formato de opción.
dotnet_style_coalesce_expression
Propiedad | Valor | Descripción |
---|---|---|
Nombre de la 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 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
Supresión de una advertencia
Si solo quiere suprimir una única 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
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none
Para deshabilitar todas las reglas de estilo del código, establezca la gravedad de la categoría Style
en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.