2011-10-14 34 views
6

對於lambda來說,我還是一個新手,很難找到它的特定功能,但是可以爲通用列表中的每個對象執行一個方法嗎?與ConvertAll的工作方式類似,但不是轉換,而是實際調用方法。使用lambda執行通用列表中的每個對象的方法

public class Mouse() 
{ 
    public void Squeak() 
    { 
    } 
} 

List<Mouse> mice = new List<Mouse>(); 

mice.Add(new Mouse()); 
mice.Add(new Mouse()); 

你如何爲每隻鼠標調用方法Squeak?

mice.???(m => m.Squeak()); 

回答

4

可以使用List<T>.ForEach()法(see MSDN)做到這一點:

mice.ForEach(m => m.Squeak()); 

PS:什麼是樂趣這個問題的答案是你的問題:

你如何調用該方法佳樂每個鼠標?

3

請不要使用。它看起來像一個序列操作符。序列運算符不應該有副作用。你正在使用一些看起來像序列操作符的東西,僅僅是因爲它的副作用。相反,只是使用普通的老枯燥的循環:

foreach(var mouse in mice) { 
    mouse.Squeak(); 
} 

埃裏克利珀具有與此相關的話題一個神話般的文章:foreach vs. ForEach

相關問題