これがサンプルコードです。
var values = new List<string>() { "Stack", "Over", "Go" };
var funcs = new List<Func<string>>();
foreach(var v in values)
funcs.Add( ()=>v );
foreach(var f in funcs)
Console.WriteLine(f());
Visual Studio 2010でこのコードを実行すると、次のような出力が得られました。
Go Go Go
しかし、Visual Studio 2012で同じコードを試したところ、出力は次のようになりました。
Stack Over Go
なぜ動作が異なるのですか?