2008-12-09 105 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); 

没有对你有好处,那么我认为你坚持与反思。