Quando in C# vogliamo inizializzare una lista di oggetti all'atto della costruzione della lista, abbiamo a disposizione una sintassi molto semplice: dopo il costruttore si aprono le parentesi graffe, si inseriscono gli oggetti separati da virgola e poi si chiudono le parentesi graffe. Un esempio viene mostrato qui sotto.
var l = new List<int>() { 1,2,3,4,5 }; var a = new [] { 1,2,3,4,5 };
A partire dalla versione 12 di C#, abbiamo a disposizione una nuova sintassi ispirata a linguaggi come JavaScript e Python: collection initializer. Con questa nuova sintassi possiamo omettere sia il costruttore che le parentesi graffe e includere semplicemente gli oggetti in parentesi quadre.
List<int> l = [1,2,3,4,5];
Come si vede nell'esempio, la sintasi è più compatta rispetto al passato. Va tuttavia notato che questa sintassi implica l'impossibilità di usare var per dichiarare una variabile. Le collection expression istanziano e inizializzano la variabile in base al suo tipo. Quando si utilizza var, il tipo viene dichiarato a destra dell'uguale, ma essendoci a destra il collection initializer che non esprime un tipo, il compilatore non saprebbe che tipo istanziare e siamo quindi obbligati a dichiararlo a sinistra.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Effettuare il binding di date in Blazor
Utilizzare una qualunque lista per i parametri di tipo params in C#
Configurare lo startup di applicazioni server e client con .NET Aspire
Potenziare la ricerca su Cosmos DB con Full Text Search
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
I più letti di oggi
- Utilizzare DeepSeek R1 con Azure AI
- Ottimizzare le performance usando Span<T> e il metodo Split
- Disabilitare un bottone in una pagina HTML pensando all'accessibilità
- Real Code Conference 4: ASP.NET 4.0: dal runtime alle WebForm
- Definire le policy di caching tramite un helper su ASP.NET
- Whidbey, Yukon e Longhorn su MSDN