Usare il corpo dell'espressione per le proprietà (IDE0025)

Proprietà valore
ID regola IDE0025
Titolo Usare il corpo dell'espressione per le proprietà
Categoria Style
Sottocategoria Regole del linguaggio (membri con corpo di espressione)
Linguaggi applicabili C#
Opzioni csharp_style_expression_bodied_properties

Panoramica

Questa regola di stile riguarda l'uso dei corpi delle espressioni rispetto ai corpi di blocco per le proprietà.

Opzioni

Impostare il valore dell'opzione associata per questa regola per specificare se i corpi delle espressioni o i corpi di blocco per le proprietà sono preferiti e se i corpi delle espressioni sono preferiti, indipendentemente dal fatto che siano preferiti solo per le espressioni a riga singola.

Per altre informazioni sulla configurazione delle opzioni, vedere Formato delle opzioni.

csharp_style_expression_bodied_properties

Proprietà Valore Descrizione
Nome opzione csharp_style_expression_bodied_properties
Valori delle opzioni true Preferisce i corpi delle espressioni per le proprietà
when_on_single_line Preferisce i corpi di espressione per le proprietà quando saranno una singola riga
false Preferisce corpi di blocco per le proprietà
Valore dell'opzione predefinito true
// csharp_style_expression_bodied_properties = true
public int Age => _age;

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

Questa regola e IDE0027

Questa regola, IDE0025e IDE0027 (Usare il corpo dell'espressione per le funzioni di accesso) sono molto simili. IDE0025 riguarda la proprietà nel suo complesso, mentre IDE0027 riguarda in particolare le parti della funzione di accesso della proprietà .

Per una proprietà di sola lettura che restituisce semplicemente un valore senza eseguire alcun calcolo, se IDE0025 è impostato su ma IDE0027 è impostato csharp_style_expression_bodied_properties = false su csharp_style_expression_bodied_accessors = true, si ottiene una proprietà simile alla seguente:

public int TemperatureF
{
    get => _temp;
}

Tuttavia, se si imposta su IDE0025 , la proprietà viene semplificata ulteriormente (anche se impostata su csharp_style_expression_bodied_accessors = falseIDE0027 ):csharp_style_expression_bodied_properties = true

public int TemperatureF => _temp;

Per una proprietà di lettura/scrittura, la differenza diventa un po' più evidente, perché la proprietà non può essere scritta in modo con corpo di espressione (perché è costituita da più righe). Quindi, anche se IDE0025 è impostato su csharp_style_expression_bodied_properties = true, si finisce ancora con parentesi graffe, ovvero un corpo di blocco.

Negli esempi seguenti viene illustrato l'aspetto di una proprietà con varie combinazioni delle due opzioni.

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

Eliminare un avviso

Se si desidera eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per disabilitare tutte le regole in stile codice, impostare la gravità per la categoria Style su none nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche