Lambda-Variablenerfassung in Schleife - was passiert hier?

Ich versuche, meinen Kopf herumzukriegen, was passiert hier? Welche Art von Code erzeugt der Compiler?

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();
}

Ausgabe: 10 10 .. 10

GemäßdieseFür jede Iteration wird eine neue Instanz von ActionHelper erstellt. In diesem Fall würde ich davon ausgehen, dass es 1..10 drucken sollte. Kann mir jemand einen Pseudocode geben, was der Compiler hier macht?

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage