Захват лямбда-переменной в цикле - что здесь происходит?

Я пытаюсь разобраться, что здесь происходит? Какой код генерирует компилятор?

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. Может кто-нибудь дать мне какой-нибудь псевдокод того, что делает компилятор здесь?

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос