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.