Je veux pouvoir passer une méthode comme paramètre.
EG .. P>
//really dodgy code public void PassMeAMethod(string text, Method method) { DoSomething(text); // call the method //method1(); Foo(); } public void methodA() { //Do stuff } public void methodB() { //Do stuff } public void Test() { PassMeAMethod("calling methodA", methodA) PassMeAMethod("calling methodB", methodB) }
6 Réponses :
Utilisez Exemple: p> action
ou FUNC
Func<int, string> func1 = (x) => string.Format("string = {0}", x); PassMeAMethod("text", func1); public void PassMeAMethod(string text, Func<int, string> func1) { Console.WriteLine( func1.Invoke(5) ); }
bâtiment sur ce que Brunolm a fait, comme cet exemple était bref.
Pouvez-vous utiliser ceci code> dans un vide statique?
Vous devez utiliser un délégué, qui est une classe spéciale qui représente une méthode. Vous pouvez définir votre propre délégué ou utiliser l'une des celles construites, mais la signature du délégué doit correspondre à la méthode que vous souhaitez réussir.
Définition de votre propre: P>
public void PassMeAMethod(string text, Action method) { DoSomething(text); // call the method method(); } public void methodA() { //Do stuff } public void methodB() { //Do stuff } public void Test() { //Explicit PassMeAMethod("calling methodA", new Action(methodA)); //Implicit PassMeAMethod("calling methodB", methodB); }
Les délégués sont la langue caractéristique que vous allez avoir besoin d'utiliser pour accomplir ce que vous essayez de faire.
Voici un exemple utilisant le code que vous avez ci-dessus (à l'aide du Action code>
délégué en tant que raccourci): p>
Vous devriez être capable de le faire avec des délégués.
Quelle version du .NET Framework utilisez-vous?
3.5, quelqu'un peut-il me montrer en utilisant l'exemple ci-dessus? Merci
Est-ce que cela répond à votre question? Méthode de passe comme paramètre utilisant C #