Variável capturada em um loop em C #

Eu conheci uma questão interessante sobre c #. Eu tenho código como abaixo. List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) {...