Ottimizzare l'uso di memoria usando le static anonymous function in C#

di Stefano Mostarda, in .NET,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi