Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | Valore |
|---|---|
| ID della regola | IDE0306 |
| Titolo | Usare l'espressione di raccolta per creare nuovi oggetti |
| Categoria | Stile |
| sottocategoria | Regole del linguaggio (preferenze a livello di espressione) |
| lingue applicabili | C# 12+ |
| Opzioni | dotnet_style_prefer_collection_expression |
Informazioni generali
Questa regola contrassegna le posizioni in cui un'espressione di raccolta con un elemento spread (..) può essere usata per inizializzare un elenco anziché new. Ad esempio, questa regola consente di semplificare il codice come new List<...>(x) nel formato dell'espressione di raccolta ([.. x]).
Opzioni
Le opzioni specificano il comportamento che si desidera che la regola implementi. Per informazioni sulla configurazione delle opzioni, vedere Formato opzione.
dotnet_style_prefer_collection_expression
| Proprietà | Valore | Descrizione |
|---|---|---|
| Nome dell'opzione | dotnet_style_prefer_collection_expression | |
| valori di opzione | true | when_types_exactly_match |
Preferisce usare espressioni di raccolta solo quando i tipi corrispondono esattamente, ad esempio List<int> list = new List<int>() { 1, 2 };. |
when_types_loosely_match* |
Preferire usare espressioni di raccolta anche quando i tipi coincidono vagamente, ad esempio IEnumerable<int> list = new List<int>() { 1, 2 };. Il tipo di destinazione deve corrispondere al tipo sul lato destro o essere uno dei tipi seguenti: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>. |
|
false | never |
Disabilita la regola. | |
| valore di opzione predefinito | when_types_loosely_match* |
*Quando si usa questa opzione, la correzione del codice potrebbe modificare la semantica del codice.
Esempio
// Code with violation.
List<int> l1 = new List<int>(Enumerable.Range(1, 10));
List<int> m1 = new List<int>(new[] { 1, 2, 3 });
// Fixed code.
List<int> l1 = [.. Enumerable.Range(1, 10)];
List<int> m1 = [.. new[] { 1, 2, 3 }];
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 IDE0306
// The code that's violating the rule is on this line.
#pragma warning restore IDE0306
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.IDE0306.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
- Usare l'espressione di raccolta per array (IDE0300)
- Usare l'espressione di raccolta per vuoto (IDE0301)
- Utilizzare l'espressione di raccolta per stackalloc (IDE0302)
-
Usare l'espressione di raccolta per
Create()(IDE0303) - Utilizzare l'espressione di raccolta per il costruttore (IDE0304)
- Usare l'espressione di raccolta per Fluent (IDE0305)