Supposons que le code suivant:Question sur foreach et les délégués
foreach(Item i on ItemCollection)
{
Something s = new Something();
s.EventX += delegate { ProcessItem(i); };
SomethingCollection.Add(s);
}
Bien sûr, cela est faux parce que tous les points de délégués au même article. L'alternative est:
foreach(Item i on ItemCollection)
{
Item tmpItem = i;
Something s = new Something();
s.EventX += delegate { ProcessItem(tmpItem); };
SomethingCollection.Add(s);
}
Dans ce cas, tous les délégués pointent vers leur propre élément.
Qu'en est-il de cette approche? Il y a une autre meilleure solution?
Pourriez-vous poster un code complet qui compile et montre la différence? – empi
Vous pouvez décompiler le premier morceau de code en utilisant C# 1.0 et vous verrez quelle est la différence –