Compartilhar via


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)
idiomas 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 esta regra para especificar se se prefere corpos de expressão ou corpos de bloco para propriedades e, caso se prefira corpos de expressão, se são preferidos apenas para expressões de linha única.

Para obter mais informações sobre como configurar opções, consulte Formato de opção.

csharp_style_expression_bodied_properties

Propriedade Valor Descrição
Nome da opção csharp_style_expression_bodied_properties
Valores das opções 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 de 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 refere-se especificamente às partes de acesso da propriedade.

Para uma propriedade somente leitura que simplesmente retorna um valor sem fazer qualquer computação, se IDE0025 estiver definida como csharp_style_expression_bodied_properties = false mas IDE0027 estiver definida como csharp_style_expression_bodied_accessors = true, você acabará com uma propriedade semelhante a esta:

public int TemperatureF
{
    get => _temp;
}

Mas 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 única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, habilitar novamente 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 de um arquivo, pasta ou projeto, defina sua 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 para none no arquivo de configuração .

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também