The following code outputs 33 instead of 012. I don't understand why a new variable loopScopedi isn't captured in each iteration rather than capturing the same variable.
Action[] actions = new Action[3];
for (int i = 0; i < 3; i++)
{
   actions [i] = () => {int loopScopedi = i; Console.Write (loopScopedi);};
}
foreach (Action a in actions) a();     // 333
Hopwever, this code produces 012. What's the difference between the two?
Action[] actions = new Action[3];
for (int i = 0; i < 3; i++)
{
    int loopScopedi = i;
    actions [i] = () => Console.Write (loopScopedi);
}
foreach (Action a in actions) a();     // 012
 
     
     
     
     
    