【发布时间】:2014-05-20 02:15:00
【问题描述】:
我的盒子上安装了 .net 4.5,并且我知道以下行为与 foreach 捕获 .net 3.5 和 4 之间关闭方式的差异有关。
我想更好地理解为什么在 VS 2012 和 VS2010 中运行相同的代码在两种情况下都使用 .net Framework 4 进行编译时会显示不同的输出,是不是 VS 2012 运行 csc 时带有一些特殊标志导致它捕获关闭?
var words = new[] { "foo", "bar", "baz", "beer" };
var actions = new List<Action>();
foreach (string word in words)
{
actions.Add(() => Console.WriteLine(word));
}
actions.ForEach(e => e());
输出:使用 VS2010 和 .net 4,上述程序产生“啤酒”4 次
使用 VS2012 和 .net 4:
foo bar baz 啤酒
【问题讨论】:
-
考虑展示你在每个中看到的行为...
-
出于好奇,哪个做什么? (每个的输出是什么?)
-
针对 C# 5 进行了更改,VS 2012 默认使用新的 C# 编译器:stackoverflow.com/questions/8898925/…
标签: c# .net visual-studio-2010 visual-studio-2012