Condividi tramite


Utilizzare l'inizializzatore di raccolta per new (IDE0306)

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