Захват лямбда-переменной в цикле - что здесь происходит?
Я пытаюсь разобраться, что здесь происходит? Какой код генерирует компилятор?
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();
}
выход: 10 10 .. 10
Согласно сэтоновый экземпляр ActionHelper будет создаваться для каждой итерации. Так что в этом случае я бы предположил, что он должен вывести 1..10. Может кто-нибудь дать мне какой-нибудь псевдокод того, что делает компилятор здесь?
Благодарю.