Utiliser un corps d'expression pour les propriétés (IDE0025)

Propriété Value
Identificateur de la règle IDE0025
Titre Utiliser un corps d’expression pour les propriétés
Catégorie Style
Sous-catégorie Règles de langage (membres expression-bodied)
Langages applicables C#
Options csharp_style_expression_bodied_properties

Vue d’ensemble

Cette règle de style concerne l’utilisation des corps d’expression et des corps de bloc pour les propriétés.

Options

Définissez la valeur de l’option associée pour cette règle afin de spécifier s’il faut préférer les corps d’expression ou les corps de bloc pour les propriétés et, si ce sont les corps d’expression qui sont préférés, s’ils le sont uniquement pour les expressions sur une seule ligne.

Pour plus d’informations sur la configuration des options, consultez Format d’option.

csharp_style_expression_bodied_properties

Propriété Valeur Description
Nom d'option csharp_style_expression_bodied_properties
Valeurs d’option true Préférer les corps d’expression pour les propriétés
when_on_single_line Préférer les corps d’expression pour les propriétés sur une seule ligne
false Préférer les corps de bloc pour les propriétés
Valeur d’option par défaut true
// csharp_style_expression_bodied_properties = true
public int Age => _age;

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

Cette règle et IDE0027

Cette règle, IDE0025 et IDE0027 (Utiliser le corps d’expression pour les accesseurs) sont très similaires. IDE0025 concerne la propriété dans son ensemble, tandis que IDE0027 concerne spécifiquement la partie des accesseurs de la propriété.

Pour une propriété en lecture seule qui renvoie simplement une valeur sans effectuer de calcul, si la règle IDE0025 est définie sur csharp_style_expression_bodied_properties = false, mais que IDE0027 est définie sur csharp_style_expression_bodied_accessors = true, vous obtenez une propriété qui ressemble à ceci :

public int TemperatureF
{
    get => _temp;
}

Toutefois, si vous définissez IDE0025 sur csharp_style_expression_bodied_properties = true, la propriété est simplifiée encore plus (même si vous définissez IDE0027 sur csharp_style_expression_bodied_accessors = false) :

public int TemperatureF => _temp;

Pour une propriété en lecture-écriture, la différence devient un peu plus apparente, car la propriété ne peut pas être écrite dans un corps d’expression (car elle se compose de plusieurs lignes). Ainsi, même si IDE0025 est définie sur csharp_style_expression_bodied_properties = true, vous finissez toujours par des accolades, c’est-à-dire un corps de bloc.

Les exemples suivants montrent à quoi ressemble une propriété avec différentes combinaisons des deux options.

// 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;
    }
}

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable IDE0025
// The code that's violating the rule is on this line.
#pragma warning restore IDE0025

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.IDE0025.severity = none

Pour désactiver toutes les règles de style de code, définissez la gravité de la catégorie Style sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Voir aussi