2008-12-09 12 views
0

Je voudrais faire quelque chose comme ce qui suit en C#:C# équivalent de C++ mem_fun?

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

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

En C++ j'utiliser quelque chose comme std :: mem_fun. Comment je le ferais en C#?

Répondre

2

Cela devrait fonctionner, en C# 3.0:

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

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

Merci, qui fait l'affaire. (Malheureusement, cela crée encore des déchets, c'est pourquoi je n'ai pas renvoyé un enquêteur, mais c'est une autre histoire.) –

0

En supposant que:

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

est pas bon pour vous, alors je pense que vous êtes coincé avec la réflexion.