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
Limitare le richieste lato server con l'interactive routing di Blazor 8
Creare form tipizzati con Angular
Installare le Web App site extension tramite una pipeline di Azure DevOps
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Sostituire la GitHub Action di login su private registry
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Utilizzare Tailwind CSS all'interno di React: installazione
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Usare un KeyedService di default in ASP.NET Core 8
Sfruttare al massimo i topic space di Event Grid MQTT
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core