Usare inizializzatori o espressioni di raccolta (IDE0028)

Proprietà valore
ID regola IDE0028
Title Usare gli inizializzatori di insieme
Categoria Style
Sottocategoria Regole del linguaggio (preferenze a livello di espressione)
Linguaggi applicabili C# r 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, le 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, il correttore di 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, il correttore 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 il sistema di 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 delle opzioni.

dotnet_style_collection_initializer

Proprietà valore Descrizione
Nome opzione dotnet_style_collection_initializer
Valori delle opzioni true Preferisce usare gli inizializzatori di raccolta.
false Non preferire gli inizializzatori di raccolta.
Valore dell'opzione predefinito true

dotnet_style_prefer_collection_expression (solo C#)

Proprietà valore Descrizione
Nome opzione dotnet_style_prefer_collection_expression
Valori delle opzioni true Preferisce usare espressioni di raccolta.
false Non preferire espressioni di raccolta.
Valore dell'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}
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code.
List<int> list = new List<int>
{
    1,
    2,
    3
};
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.AddRange(new[] { 5, 6, 7 });

// Fixed code.
List<int> list = [1, .. new[] { 5, 6, 7 }];
' 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à none su nel file di configurazione.

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

Per disabilitare tutte le regole in stile 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.

Vedi anche