Condividi tramite


Usare inizializzatori o espressioni di raccolta (IDE0028)

Proprietà Valore
ID regola IDE0028
titolo Usare gli inizializzatori di raccolta
categoria Stile
sottocategoria Regole del linguaggio (preferenze a livello di espressione)
lingue applicabili C# e Visual Basic
Opzioni dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Panoramica

Questa regola di stile riguarda l'uso di inizializzatori di raccolta e, se si usa C# 12 o versione successiva, espressioni di raccolta per l'inizializzazione della raccolta.

In .NET 8 (C# 12) e versioni successive, se è impostata l'opzione dotnet_style_prefer_collection_expression su true, la correzione del codice in Visual Studio converte il codice di inizializzazione della raccolta in modo da usare un'espressione di raccolta (List<int> list = [1, 2, 3];). In Visual Basic e in .NET 7 (C# 11) e versioni precedenti, la correzione del codice converte il codice in modo da usare un inizializzatore di raccolta (List<int> list = new List<int> { 1, 2, 3 };).

Nota

Se si usa la correzione del codice in Visual Studio, la modifica offerta potrebbe avere semantiche diverse in alcuni casi. Ad esempio, int[] x = new int[] { } viene sostituito con int[] x = [];, che ha una semantica leggermente diversa. Il compilatore usa un singleton per x anziché creare una nuova istanza.

Opzioni

Impostare i valori delle opzioni associate per questa regola per specificare se gli inizializzatori di raccolta e le espressioni di raccolta sono preferiti durante l'inizializzazione delle raccolte.

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

dotnet_style_collection_initializer

Proprietà Valore Descrizione
nome opzione dotnet_style_collection_initializer
valori di opzione true Preferisce usare gli inizializzatori di raccolta.
false Non preferire gli inizializzatori di raccolta.
valore di opzione predefinito true

dotnet_style_prefer_collection_expression (solo C#)

Proprietà Valore Descrizione
nome opzione dotnet_style_prefer_collection_expression
valori di opzione true Preferisce usare espressioni di raccolta.
false Non preferire espressioni di raccolta.
valore di opzione predefinito true

Esempi

// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code (with dotnet_style_prefer_collection_expression = true)
List<int> list = [1, 2, 3];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {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 IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028

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.IDE0028.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