La comprobación nula se puede simplificar (IDE0029, IDE0030 y 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 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 recomendarx ?? y
en lugar dex != null ? x : y
cuandox
yy
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 recomendarx ?? y
en lugar dex != null ? x : y
cuandox
yy
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.