Why does an event handler never get called if it's added within a loop on an ienumerable?
.net, ienumerable
Solution
Your `Select` call is creating new instances of `MyType`, which means that...
When `list` is typed as `IEnumerable<MyType>` then you're dealing with a new sequence of new objects each time you enumerate `list`. The objects to which you're adding event handlers are not the same objects that you're subsequently testing.
When `list` is typed as `MyType[]` (by using the `ToArray` call) then you're dealing with the same collection of objects each time you enumerate `list`. The objects to which you're adding event handlers are the same objects that you're subsequently testing.
Problem
Why does an event handler never get called if it's added within a loop on an ienumerable? For instance: ``` IEnumerable<MyType> list = someCollection.Select(i => new MyType(i)); foreach (var item in list) item.PropertyChanged += item_PropertyChanged; <-- this never gets called ``` Bu if list is assigned like ``` list = someCollection.Select(i => new MyType(i)).ToArray(); ``` the event handler does get called.. Why? (I imagine it has something to do with the fact that a LINQ query is lazy, but the fact of looping through the result isn't enough?)