Usar o corpo da expressão para propriedades (IDE0025)
Propriedade | Valor |
---|---|
ID da regra | IDE0025 |
Título | Usar o corpo da expressão para propriedades |
Categoria | Estilo |
Subcategoria | Regras de linguagem (membros aptos para expressão) |
Linguagens aplicáveis | C# |
Opções | csharp_style_expression_bodied_properties |
Visão geral
Essa regra de estilo diz respeito ao uso de corpos de expressão versus corpos de bloco para propriedades.
Opções
Defina o valor da opção associada a essa regra para especificar se corpos de expressão ou corpos de bloco para propriedades são preferenciais e se os corpos de expressão são preferenciais, sejam eles preferenciais apenas para expressões de linha única.
Para obter mais informações sobre como configurar as opções, confira Formato da opção.
csharp_style_expression_bodied_properties
Propriedade | Valor | Descrição |
---|---|---|
Nome da opção | csharp_style_expression_bodied_properties | |
Valores da opção | true |
Preferir corpos de expressão para propriedades |
when_on_single_line |
Preferir corpos de expressão para propriedades quando eles forem uma única linha | |
false |
Preferir blocos do corpo para propriedades | |
Valor da opção padrão | true |
// csharp_style_expression_bodied_properties = true
public int Age => _age;
// csharp_style_expression_bodied_properties = false
public int Age { get { return _age; }}
Comparação entre esta regra e a IDE0027
Esta regra, IDE0025
, e a regra IDE0027 (Usar o corpo da expressão para acessadores) são muito semelhantes. IDE0025
refere-se à propriedade como um todo, enquanto IDE0027
se relaciona especificamente às partes do acessador da propriedade.
Para uma propriedade somente leitura que simplesmente retorna um valor sem fazer nenhum cálculo, se IDE0025
estiver definido como csharp_style_expression_bodied_properties = false
mas IDE0027
estiver definido como csharp_style_expression_bodied_accessors = true
, você acabará com uma propriedade semelhante a esta:
public int TemperatureF
{
get => _temp;
}
No entanto, se você definir IDE0025
como csharp_style_expression_bodied_properties = true
, a propriedade será simplificada ainda mais (mesmo se você definir IDE0027
como csharp_style_expression_bodied_accessors = false
):
public int TemperatureF => _temp;
Em uma propriedade de leitura/gravação, a diferença se torna um pouco mais aparente, porque a propriedade não pode ser escrita com corpo da expressão (pois consiste em mais de uma linha). Portanto, mesmo que IDE0025
for definida como csharp_style_expression_bodied_properties = true
, você ainda acabará com chaves, ou seja, um corpo do bloco.
Os exemplos a seguir mostram a aparência de uma propriedade com várias combinações das duas opções.
// 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;
}
}
Suprimir um aviso
Se você quiser suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite a regra.
#pragma warning disable IDE0025
// The code that's violating the rule is on this line.
#pragma warning restore IDE0025
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.IDE0025.severity = none
Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style
como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.