Tại sao trình xử lý sự kiện không bao giờ được gọi nếu nó được thêm vào trong vòng lặp trên một số không?Tại sao trình xử lý sự kiện không bao giờ được gọi nếu nó được thêm vào trong vòng lặp trên một số không?
Ví dụ:
IEnumerable<MyType> list = someCollection.Select(i => new MyType(i));
foreach (var item in list)
item.PropertyChanged += item_PropertyChanged; <-- this never gets called
Bu nếu danh sách được gán như
list = someCollection.Select(i => new MyType(i)).ToArray();
xử lý sự kiện nào được gọi ..
Tại sao? (Tôi tưởng tượng nó có một cái gì đó để làm với thực tế là một truy vấn LINQ là lười biếng, nhưng thực tế của looping thông qua kết quả là không đủ?)