首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于static,该怎么解决

2012-04-06 
关于staticC# codeclass Program{public delegate void Del(string message)public static void Delegate

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

热点排行