所以假设我有这个代码:
Func<int>[] list = new Func<int>[4];
for (int i = 0; i < 4; ++i)
{
list[i] = delegate
{
return i;
};
}
foreach (var f in list) Console.WriteLine(f());
输出将是
4
4
4
4
因为代表中的所有“i”都指向同一个变量。
有什么方法可以保留我在创建委托时所处的状态的副本?