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.