假设以下代码:
当然,这是错误的,因为所有委托都指向同一个项目。 可以选择以下替代方案:
foreach(Item i on ItemCollection)
{
Something s = new Something();
s.EventX += delegate { ProcessItem(i); };
SomethingCollection.Add(s);
}
当然,这是错误的,因为所有委托都指向同一个项目。 可以选择以下替代方案:
foreach(Item i on ItemCollection)
{
Item tmpItem = i;
Something s = new Something();
s.EventX += delegate { ProcessItem(tmpItem); };
SomethingCollection.Add(s);
}
在这种情况下,所有的委托都指向它们自己的项目。
这种方法怎么样?还有其他更好的解决方案吗?