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
Triggerare una pipeline su un altro repository di Azure DevOps
Ordinare randomicamente una lista in C#
Utilizzare l nesting nativo dei CSS
La gestione della riconnessione al server di Blazor in .NET 9
Gestione CSS in Blazor con .NET 9
Generare un hash con SHA-3 in .NET
Eliminare una project wiki di Azure DevOps
Recuperare App Service cancellati su Azure
Gestire gli accessi con Token su Azure Container Registry
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
Gestire la cancellazione di una richiesta in streaming da Blazor