int[] data = new int[] { 一, 2, 3, 4, 5 }; List> actions = new List>(); IEnumer

int[] data = new int[] { 1, 2, 3, 4, 5 }; List> actions = new List>(); IEnumer


int[] data = new int[] { 1, 2, 3, 4, 5 };
List> actions = new List>();
IEnumerator e = data.GetEnumerator();

int x = 0;
while (e.MoveNext())
{
x = (int)e.Current;
actions.Add(() => x);
}

foreach (var foo in actions)
{
Console.WriteLine(foo());
}
能不能把第二个foreach改成while的形式,让我看看
运行结果为什么是55555?能不能把第二个foreach改成while让我看看
------解决思路----------------------
那个actions应该是List<Func<int>>的吧,在while外面定义x,导致实际的func只创建了一遍,被添加了5次,闭包抓的x就是最后赋的值5。前面的foreach都能写成while,后面的有什么区别么?