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 Hybrid Cache in .NET 9
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Scrivere selettori CSS più semplici ed efficienti con :is()
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Creare una custom property in GitHub
Utilizzare Azure AI Studio per testare i modelli AI
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Migliorare la sicurezza dei prompt con Azure AI Studio
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API