.NET 8 introduce due nuovi tipi che ottimizzano le performance di accesso alle liste di oggetti: FrozenSet[T] e FrozenDictionary[T]. Il primo tipo contiene una lista di oggetti senza ammettere duplicati, mentre il secondo contiene un dictionary. Queste liste devono essere valorizzate in fase di istanziazione e poi non possono più essere modificate. Questo significa che durante la fase di inizializzazione i dati vengono immagazzinati in modo che le successive letture siano più performanti possibile (si stima che possano essere fino al 47% più veloci dei loro equivalenti non frozen). Queste caratteristiche rendendo questi tipi ottimi candidati per contenere dati che vengono caricati durante lo startup di un'applicazione e poi non cambiano più, ma vengono solamente letti. Un esempio di questo genere di dati possono essere tabelle di lookup dal database, dati di configurazione o altro ancora.
L'istanziazione di queste classi non può avvenire con un semplice new in quanto, una volta istanziata, l'istanza non può essere modificata. Per creare quindi questi oggetti dobbiamo rivolgerci a dei metodi di creazione che sono esposti dalla classi statiche FrozenSet e FrozenDictionary (versione non generica). Per creare un FrozenSet[T], dobbiamo usare il metodo ToFrozenSet di FrozenSet.
var set = FrozenSet.ToFrozenSet([1, 2, 3, 4, 5, 6, 7, 8]);
Questo utilizzo del metodo è comodo quando i dati sono statici, ma molto più facilmente capita che i dati siano in una lista e dobbiamo metterli in un FrozenSet[T]. Poichè ToFrozenSet è un extension method su IEnumerable[T], possiamo usarlo per trasformare qualsiasi lista in un FrozetSet[T].
var list = GetDataFromSource(); var frozenSet = list.ToFrozenSet();
Per creare un FrozenDictionary[T] il pattern è uidentico a quello appena visto per FrozenSet[T] con la sola differenza che si usa il metodo ToFrozenDictionary della classe ToFrozenDictionary.
//dati statici FrozenDictionary.ToFrozenDictionary(new Dictionary<string, int> { { "a", 1 }, { "b", 2 }, { "c", 3 } }); //dati da sorgente var dict = GetDataFromSource(); var frozenDict = dict.ToFrozenDictionary();
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare gRPC su App Service di Azure
Utilizzare Azure AI Studio per testare i modelli AI
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
.NET Aspire per applicazioni distribuite
Eseguire script pre e post esecuzione di un workflow di GitHub
Collegare applicazioni server e client con .NET Aspire
Cancellare una run di un workflow di GitHub
Eseguire i worklow di GitHub su runner potenziati
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Configurare e gestire sidecar container in Azure App Service
Creare agenti facilmente con Azure AI Agent Service
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento