2008-12-09 140 views
0

我想這樣做在C#中的以下內容:C#等價於C++ mem_fun?

class Container { 
     //... 
     public void ForEach(Action method) { 
      foreach (MyClass myObj in sequence) myObj.method(); 
     } 
    } 

    //... 
    containerObj.ForEach(MyClass.Method); 

在C++中我會使用類似的std :: mem_fun。我將如何在C#中完成它?

回答

2

這應該工作,在C#3.0:

class Container 
{   
//...   
public void ForEach(Action<MyObj> method) 
{    
    foreach (MyClass myObj in sequence) method(myObj);   
}  
} 

//... containerObj.ForEach(myobj => myObj.Method()); 
+0

謝謝,這是卓有成效的。 (不幸的是它仍然會產生垃圾,這就是爲什麼我不只是返回一個枚舉器,但這是另一回事。) – 2008-12-09 15:21:10

0

假設:

public void ForEach(Action method) { 
     foreach (MyClass myObj in sequence) method(myObj); 

沒有對你有好處,那麼我認爲你堅持與反思。