Uso de la coincidencia de patrones para evitar la comprobación de "is" seguida de una conversión (IDE0020 e IDE0038)

En este artículo se describen dos reglas relacionadas, IDE0020 y IDE0038.

Propiedad Value
Identificador de la regla IDE0020
Título Uso de la coincidencia de patrones para evitar la comprobación de is seguida de una conversión (con variable)
Categoría Estilo
Subcategoría Reglas del lenguaje (preferencias de coincidencia de patrones)
Lenguajes aplicables C#
Opciones csharp_style_pattern_matching_over_is_with_cast_check
Propiedad Value
Identificador de la regla IDE0038
Título Uso de la coincidencia de patrones para evitar la comprobación de is seguida de una conversión (sin variable)
Categoría Estilo
Subcategoría Reglas del lenguaje (preferencias de coincidencia de patrones)
Lenguajes aplicables C#
Opciones csharp_style_pattern_matching_over_is_with_cast_check

Información general

Esta regla de estilo se refiere al uso de la coincidencia de patrones de C#, por ejemplo, o is int i, en una comprobación de is seguida de una conversión, por ejemplo, if (o is int) { ... (int)o ... }. Habilite IDE0020 o IDE0038 en función de si la expresión de conversión se debe guardar en una variable local independiente o no:

  • IDE0020: La expresión de conversión se guarda en una variable local. Por ejemplo, if (o is int) { var i = (int)o; } guarda el resultado de (int)o en una variable local.
  • IDE0038: La expresión de conversión no se guarda en una variable local. Por ejemplo, if (o is int) { if ((int)o == 1) { ... } } no guarda el resultado de (int)o en una variable local.

Opciones

Establezca el valor de la opción asociada a esta regla para especificar si se prefiere la coincidencia de patrones o la comprobación de is seguida de una conversión de tipos.

Para más información sobre la configuración de las opciones, consulte Formato de las opciones.

csharp_style_pattern_matching_over_is_with_cast_check

Propiedad Valor Descripción
Nombre de la opción csharp_style_pattern_matching_over_is_with_cast_check
Valores de opción true Prefiere la coincidencia de patrones en lugar de expresiones is con conversiones de tipo.
false Deshabilita la regla.
Valor de opción predeterminado true
// csharp_style_pattern_matching_over_is_with_cast_check = true
if (o is int i) {...}

// csharp_style_pattern_matching_over_is_with_cast_check = false
if (o is int) {var i = (int)o; ... }

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 IDE0020 // Or IDE0038
// The code that's violating the rule is on this line.
#pragma warning restore IDE0020 // Or IDE0038

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.IDE0020.severity = none
dotnet_diagnostic.IDE0038.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.

Consulte también