Pourquoi un gestionnaire d'événements n'est jamais appelé s'il est ajouté dans une boucle sur un ienumerable?Pourquoi un gestionnaire d'événements n'est jamais appelé s'il est ajouté dans une boucle sur un ienumerable?
Par exemple:
IEnumerable<MyType> list = someCollection.Select(i => new MyType(i));
foreach (var item in list)
item.PropertyChanged += item_PropertyChanged; <-- this never gets called
Bu si la liste est affectée comme
list = someCollection.Select(i => new MyType(i)).ToArray();
le gestionnaire d'événements ne s'appelle ..
Pourquoi? (Je suppose qu'il a quelque chose à voir avec le fait qu'une requête LINQ est paresseux, mais le fait de boucle à travers le résultat ne suffit pas?)