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
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Introduzione ai web component HTML
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Miglioramenti nelle performance di Angular 16
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Assegnare un valore di default a un parametro di una lambda in C#
.NET Conference Italia 2024
Generare un hash con SHA-3 in .NET
Disabilitare automaticamente un workflow di GitHub (parte 2)
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Gestire la cancellazione di una richiesta in streaming da Blazor
Utilizzare l nesting nativo dei CSS