Замыкания, ведущие себя по-разному в циклах for и foreach

Экспериментируя с замыканиями в C #, я обнаружил, что они работают довольно неожиданно, если они записывают переменную итератора в цикле.

var actions = new List<Action>();

foreach (int i in new[] { 1, 2 })
    actions.Add(() => Console.WriteLine(i));

for (int i = 3; i <= 4; i++)
    actions.Add(() => Console.WriteLine(i));

foreach (var action in actions)
    action();

Приведенный выше код дает странный результат (я использую компилятор .NET 4.5):

1
2
5
5

Почему ценностьi&nbsp;по-разному для 2 практически одинаковых петель?