Con l'introduzione di LINQ e delle lambda, C# ha permesso di dichiarare in modo molto semplice delle anonymous function inline. Quando una function inline va a utilizzare una variabile contenuta nel contesto del suo contenitore, a runtime avviene una nuova allocazione della variabile all'interno del contesto della function. Per capire meglio questo concetto, prendiamo il seguente esempio.
void Calcola() { int y = 1; CalcolaInternal(x => x + y); }
In questo caso, la variabile y viene allocata una volta all'interno del metodo Calcola e un'altra volta all'interno della lambda in input al metodo CalcolaInternal. Questa doppia allocazione può essere evitata dichiarando la lambda come statica e dichiarando la variabile y come costante.
void Calcola() { const int y = 1; CalcolaInternal(static x => x + y); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire script pre e post esecuzione di un workflow di GitHub
Rendere le variabili read-only in una pipeline di Azure DevOps
Eliminare una project wiki di Azure DevOps
Aggiornare a .NET 9 su Azure App Service
Configurare lo startup di applicazioni server e client con .NET Aspire
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Supportare la sessione affinity di Azure App Service con Application Gateway
Generare un hash con SHA-3 in .NET
Paginare i risultati con QuickGrid in Blazor
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Migliorare l'organizzazione delle risorse con Azure Policy
Creare gruppi di client per Event Grid MQTT