Condividi tramite


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

Proprietà Valore
ID regola IDE0025
Titolo Usare il corpo dell'espressione per le proprietà
categoria Stile
sottocategoria Regole del linguaggio (membri con corpo di espressione)
lingue applicabili C#
Opzioni csharp_style_expression_bodied_properties

Panoramica

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

Opzioni

Impostare il valore dell'opzione associata per questa regola per specificare se sono preferiti i corpi di espressione o i corpi di blocco per le proprietà e, se sono preferiti i corpi di espressione, specificare se quest'ultima preferenza si applica solo alle espressioni a riga singola.

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

csharp_style_expression_bodied_properties

Proprietà Valore Descrizione
nome opzione csharp_style_expression_bodied_properties
valori di opzione 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 Indica la preferenza per i corpi di blocco per le proprietà
valore di 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 contro IDE0027

Questa regola, IDE0025, e IDE0027 (Usare il corpo dell'espressione per i metodi di accesso), sono molto simili. IDE0025 riguarda la proprietà nel suo complesso, mentre IDE0027 riguarda in modo specifico le parti accessorie della proprietà.

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

public int TemperatureF
{
    get => _temp;
}

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

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 comunque 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à su none nel file di configurazione .

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

Per disabilitare tutte le regole di tipo 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.

Vedere anche