日期:2014-05-18  浏览次数:20820 次

关于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窗体应用程序里就不需要了