以下是示例代碼。在Visual Studio 2010和2012中找到不同的答案
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
爲什麼它的行爲有什麼不同?
您可以確保您提供的代碼與您輸出的聲明相符。上面的代碼似乎不太可能產生「愚蠢愚蠢」或「鮑勃愚蠢」 – 2013-02-25 11:33:32
**什麼?**甚至可能輸出這種代碼可能「愚蠢愚蠢愚蠢」或「鮑勃愚蠢」 ? – 2013-02-25 11:33:47
我懷疑它會生成'Go Go Go'和'Stack Over Go',但發佈生成你提到的輸出的代碼。 – LukeHennerley 2013-02-25 11:34:18