Como dizer a uma função lambda para capturar uma cópia em vez de uma referência em c #?

Eu tenho aprendido C # e estou tentando entender lambdas. Nesta amostra abaixo, ele imprime 10 dez vezes.

class Program
{
    delegate void Action();
    static void Main(string[] args)
    {
        List<Action> actions = new List<Action>();

        for (int i = 0; i < 10; ++i )
            actions.Add(()=>Console.WriteLine(i));

        foreach (Action a in actions)
            a();
    }
}

Obviamente, a classe gerada atrás do lambda está armazenando uma referência ou ponteiro para oint i variável e está atribuindo um novo valor à mesma referência toda vez que o loop itera. Existe uma maneira de forçar o lamda a pegar uma cópia, como a sintaxe C ++ 0x

[&](){ ... } // Capture by reference

vs.

[=](){ ... } // Capture copies

questionAnswers(4)

yourAnswerToTheQuestion