我试图理解这里发生了什么?编译器会生成什么样的代码?
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。 有人能给我一些编译器在这里执行的伪代码吗?
谢谢。