2011-10-14 4 views
6

まだラムダには新しく、特定の機能を見つけるのは難しいですが、ジェネリックリストの各オブジェクトに対してメソッドを実行することは可能ですか? ConvertAllの動作と似ていますが、変換する代わりに実際にメソッドを呼び出します。ラムダを使ってジェネリックリストの各オブジェクトのメソッドを実行

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:答えはあなたの質問であることを楽しいとは何ですか:

どのようにメソッドのSqueakのを呼ぶのですが各マウスの

3

を使用しないでください。シーケンス演算子のように見えます。シーケンス演算子には副作用があってはなりません。あなたは、その副作用だけのためにシーケンス演算子のようなものを使用しています。 foreach vs. ForEach

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

エリックリペットは、このトピックに関連した素晴らしい記事があります。その代わり、単なる古い退屈なループを使用します。

関連する問題