Uso del cuerpo de expresiones para las propiedades (IDE0025)

Propiedad Value
Identificador de la regla IDE0025
Título Uso del cuerpo de expresiones para las propiedades
Categoría Estilo
Subcategoría Reglas del lenguaje (miembros con forma de expresión)
Lenguajes aplicables C#
Opciones csharp_style_expression_bodied_properties

Información general

Esta regla de estilo se refiere al uso de cuerpos de expresiones frente a cuerpos de bloque para las propiedades.

Opciones

Establezca el valor de la opción asociada de esta regla para especificar si se prefieren cuerpos de expresión o cuerpos de bloque para propiedades y, si se prefieren cuerpos de expresión, si solo se prefieren para expresiones de una sola línea.

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

csharp_style_expression_bodied_properties

Propiedad Valor Descripción
Nombre de la opción csharp_style_expression_bodied_properties
Valores de opción true Se prefieren cuerpos de expresión para las propiedades
when_on_single_line Se prefieren cuerpos de expresión para las propiedades cuando van a ser una sola línea
false Prefiere cuerpos de bloque para las propiedades
Valor de opción predeterminado true
// csharp_style_expression_bodied_properties = true
public int Age => _age;

// csharp_style_expression_bodied_properties = false
public int Age { get { return _age; }}

Esta regla frente a IDE0027

Esta regla, IDE0025, e IDE0027 (use un cuerpo de expresión para descriptores de acceso) son muy similares. IDE0025 se refiere a la propiedad como un todo, mientras que IDE0027 específicamente se refiere a las partes del descriptor de acceso de la propiedad.

Para una propiedad de solo lectura que simplemente devuelve un valor sin realizar ningún cálculo, si IDE0025 está establecido en csharp_style_expression_bodied_properties = false pero se establece IDE0027 en csharp_style_expression_bodied_accessors = true, termina con una propiedad similar a la siguiente:

public int TemperatureF
{
    get => _temp;
}

Pero si establece IDE0025 en csharp_style_expression_bodied_properties = true, la propiedad se simplifica aún más (incluso si se establece IDE0027 en csharp_style_expression_bodied_accessors = false):

public int TemperatureF => _temp;

Para una propiedad de lectura y escritura, la diferencia se vuelve un poco más evidente, porque la propiedad no se puede escribir en forma de expresión (porque consta de más de una línea). Por lo tanto, incluso si IDE0025 se establece en csharp_style_expression_bodied_properties = true, todavía termina con llaves, es decir, un cuerpo de bloque.

En los siguientes ejemplos se muestra cómo se ve una propiedad con varias combinaciones de las dos opciones.

// csharp_style_expression_bodied_properties = false
// csharp_style_expression_bodied_accessors = true
public int TemperatureB
{
    get => _temp;
}

// csharp_style_expression_bodied_properties = true
// csharp_style_expression_bodied_accessors = true (or false)
public int TemperatureC => _temp;

// csharp_style_expression_bodied_properties = true (or false)
// csharp_style_expression_bodied_accessors = true
public int TemperatureD
{
    get => _temp;
    set => _temp = value;
}

// csharp_style_expression_bodied_properties = true
// csharp_style_expression_bodied_accessors = false
public int TemperatureE
{
    get
    {
        return _temp;
    }
    set
    {
        _temp = value;
    }
}

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

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.IDE0025.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