0
私は別の関数に関数を渡して、それを呼び出す必要があります。私は次のコードを使用します:関数に呼び出しを渡すにはどうしたらいいですか?
namespace DelegateTest
{
class Program
{
public class MySampleClass
{
public void click(string param)
{
System.Console.WriteLine(param + " click!");
}
public void flick(string param)
{
System.Console.WriteLine(param + " flick!");
}
}
public static delegate void EventToWait(string param);
public static void waitFor(EventToWait myEvent, string param)
{
// here is a **very** complex loop, which i would like wipe from main() function
myEvent(param);
}
public static void Main(string[] args)
{
MySampleClass sc = new MySampleClass();
EventToWait ev1 = sc.click;
EventToWait ev2 = sc.flick;
waitFor(ev1, "Button_1");
waitFor(ev2, "Button_2");
System.Console.ReadKey();
}
}
}
私のコンパイラは言う、その代理人は静的にすることはできません。どうすればこの問題に対処できますか?
がpublic static void Main(string[] args)
{
MySampleClass sc = new MySampleClass();
EventToWait ev1 = sc.click;
EventToWait ev2 = sc.flick;
waitFor((k)=>sc.click(k), "Button_1");
waitFor((k)=>sc.flick(k), "Button_2");
System.Console.ReadKey();
}
この宣言の必要を避ける:
public static void waitFor(Action<string> myEvent, string param)
をし、あなたのメインの呼び出しで:
public delegate void EventToWait(string param);
oh ...あなたが正しい – Eugene