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
Utilizzare Azure Cosmos DB con i vettori
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Generare la software bill of material (SBOM) in GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Triggerare una pipeline su un altro repository di Azure DevOps
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Utilizzare QuickGrid di Blazor con Entity Framework
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Managed deployment strategy in Azure DevOps
Creare un webhook in Azure DevOps