这是示例代码。
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
为什么它的行为不同?