Przechwytywanie zmiennej Lambda w pętli - co tu się dzieje?
Próbuję się rozejrzeć, co tu się dzieje? Jaki kod tworzy kompilator?
public static void vc()
{
var listActions = new List<Action>();
foreach (int i in Enumerable.Range(1, 10))
{
listActions.Add(() => Console.WriteLine(i));
}
foreach (Action action in listActions)
{
action();
}
}
static void Main(string[] args)
{
vc();
}
wydajność: 10 10 .. 10
Wedługto, nowa instancja ActionHelper zostanie utworzona dla każdej iteracji. Więc w takim przypadku zakładam, że powinien wydrukować 1..10. Czy ktoś może mi podać pseudo kod tego, co kompilator robi tutaj?
Dzięki.