关于static
- C# code
class Program { public delegate void Del(string message); public static void DelegateMethod(string message) { System.Console.WriteLine(message); } public static void MessageCallBack(int a,int b,Del callback) { callback("the number is "+(a+b).ToString()); } static void Main() { //Del hander=new Program.Del(DelegateMethod); Del hander=DelegateMethod; MessageCallBack(1,2,hander); Console.ReadKey(true); } }
上述代码是测试委托,
如果删除了public static void DelegateMethod(string message)和public static void MessageCallBack(int a,int b,Del callback)中的static就编译通不过,为什么?
同一个类中的函数不是可以直接调用的么?
[解决办法]
因为删除了 static 那就是实例方法,它需要你先实例化 Program 这个类。
删除 static 后应该这么写:
Program p = new Program();
Del hander= p.DelegateMethod;
p.MessageCallBack(1, 2, hander);
[解决办法]
你这是控制台程序
在windows窗体应用程序里就不需要了