我正在努力解决问题,这里会发生什么?编译器生成什么样的代码?
public static void vc()
{
var listActions = new List<Action>();
foreach (int i in Enumerable.Range(1, 10))
{
listActions.Add(() => Console.WriteLine(i));
}
foreach (Action action in listActions)
{
action();
}
}
static void Main(string[] args)
{
vc();
}
输出: 10 10 .. 10
据此,每次迭代都会创建一个新的 ActionHelper 实例。所以在那种情况下,我认为它应该打印 1..10。有人可以给我一些编译器在这里做什么的伪代码吗?
谢谢。