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
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Estrarre dati randomici da una lista di oggetti in C#
Miglioramenti nell'accessibilità con Angular CDK
Generare un hash con SHA-3 in .NET
Creare alias per tipi generici e tuple in C#
Utilizzare il trigger SQL con le Azure Function
Usare una container image come runner di GitHub Actions
Miglioramenti agli screen reader e al contrasto in Angular
Creare una custom property in GitHub
Utilizzare un service principal per accedere a Azure Container Registry
Eseguire una ricerca avanzata per recuperare le issue di GitHub
I più letti di oggi
- Visual Basic 2010 - Espresso
- Pubblicare su Azure Functions con Visual Studio Team Services
- Impostare le regole di autorizzazione in un'area di ASP.NET MVC
- Ricavare lo spazio occupato su disco dal nostro sito
- Migliorare l'organizzazione delle risorse con Azure Policy
- Eseguire query LINQ su liste non generiche con l'operatore Cast
- Modificare il timezone di un device IoT con la Universal Windows Platform
- Disponibili la Release Preview di Windows 8 e la Release Candidate di Visual Studio 2012
- Scegliere tra le versioni Current ed LTS di ASP.NET Core
- Mostrare tutti i campi di una tabella