Nello script #633 abbiamo introdotto i collection initializer come metodo per semplificare l'inizializzazione di liste a partire da C# 12. Quando dobbiamo creare una lista e inizializzarla nello stesso momento, spesso dobbiamo aggiungere oggetti provenienti da altre liste. L'unico approccio possibile senza i collection initializer è quello di usare il costruttore della lista passando una lista ottenuta dalla concatenazione delle lista sfruttando il metodo Concat così come mostrato in questo snippet.
int[] row0 = new [] {1,2,3};
int[] row1 = new [] { 4, 5, 6 };
int[] row2 = new [] { 7, 8, 9 };
var out = new List<int>(row0.Concat(row1).Concat(row2))Questo approccio può essere semplificato con i collection initializer e con lo spread operator identificato da due punti consecutivi "..". Vediamolo in azione prima di spiegarne il funzionamento.
int[] row0 = new [] {1,2,3};
int[] row1 = new [] { 4, 5, 6 };
int[] row2 = new [] { 7, 8, 9 };
List<int> out = [..row0, ..row1, ..row2];Lo spread operator appiattisce gli elementi di un array, quindi nell'esempio appena visto gli elementi di row0, row1 e row2 vengono passati uno ad uno alla lista out. Se non avessimo usato lo spread operator, il compilatore avrebbe cercato di creare l'istanza di out passando in input non i singoli elementi, ma gli interi insiemi craendo così una lista dove ogni elemento è un'altra lista causando un errore di compilazione visto che la variabile out è di tipo List[int].
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare comandi nella dashboard .NET Aspire
Ridimensionamento automatico input tramite CSS
Welcome to Future Dev Day 2026
.NET Aspire vs Dapr: differenze, sovrapposizioni e integrazione
Creare una cache temporanea in JavaScript
Evitare la compressione degli artefatti in un workflow di GitHub
Logica Graceful Degradation in HTML e CSS
Migrare applicazioni legacy nel cloud con Azure App Service Managed Instance
Utilizzo del persistent state di Blazor nel prerendering
Centralizzare e governare MCP server e Skill con Azure API Center
Utilizzare i named query filter di Entity Framework
How to be a DevOps engineer in the AI era


