C#基本功------委托和事件(一)
2016-03-31 13:29
501 查看
首先我们来看一个代码
publicstaticvoidTest(XXXXshow)
{}如果有个XXXX类型,能够让我传入一个方法,那就好了,那么,我们怎么做呢?
委托!!!
请看下面一段代码
现在我们对于委托有了基本概念,但是,我们为什么要用委托呢?委托在什么情况下使用呢?
显然我们是这么用的,那么,懂了吗?委托的最基本的用处就是给你在一个方法里面挖一个坑,当你需要使用这个坑的时候,把他填上就可以了
staticvoidMain(string[]args) { Test(Show); } publicstaticvoidTest() {} publicstaticvoidShow(){}红色标注的地方发生了错误,显然是不能传入一个方法的,这个时候我们会想
publicstaticvoidTest(XXXXshow)
{}如果有个XXXX类型,能够让我传入一个方法,那就好了,那么,我们怎么做呢?
委托!!!
publicdelegatevoidMydelegate();----我们来讲解下为什么这么写,首先delegate是声明委托的关键字viod是我们想要调用函数的返回值,明显Show的返回值是void 括号里的内容,是我们想要调用函数的参数,显然是没有参数的,也就是说,你想要传一个方法,必须有一个方法的类型SH其实就是Show staticvoidMain(string[]args) { Test(Show); } publicstaticvoidTest(MydelegateSH) {} publicstaticvoidShow(){}
请看下面一段代码
publicdelegateintMydelegate(inta1,inta2); staticvoidMain(string[]args) { Add(Ts);-------执行1 Console.ReadKey(); } publicstaticvoidAdd(MydelegateSH)----执行2 { intsum=SH(1,5);----执行3 Console.WriteLine(sum); } publicstaticintTs(intn1,intn2) { returnn1+n2; } 下面改造一下这个代码
publicdelegateintMydelegate(inta1,inta2); staticvoidMain(string[]args) { intsum=Add(Ts,50,60);------想传入什么值都可以 Console.WriteLine(sum); Console.ReadKey(); } publicstaticintAdd(MydelegateSH,intnum1,intnum2) { returnSH(num1,num2); } publicstaticintTs(intn1,intn2) { returnn1+n2; }
现在我们对于委托有了基本概念,但是,我们为什么要用委托呢?委托在什么情况下使用呢?
publicvoidDosth()//这是student类中的一个方法 { Console.WriteLine("吃早饭"); //=====这里是个坑,因为我可能做的事情不一样,所以这里使用委托比较好 Console.WriteLine("吃午饭"); }
staticvoidMain(string[]args)//主函数中调用这个方法,这个时候,我们知道,我们不可能一直做一样的事情 { Studentstu=newStudent(); stu.Dosth(); Console.ReadKey(); } ====================================================
publicdelegatevoidMyDel();//无参数无返回值的委托 这个时候,我们将这段代码写在Dosth()这个方法的上面,shengm一个委托,我们怎么用呢?
staticvoidMain(string[]args) { Studentstu=newStudent(); stu.Dosth(play); Console.ReadKey(); } publicstaticvoidplay() { Console.WriteLine("哈哈,我可以打游戏了,我好爽,不服你打我"); }
显然我们是这么用的,那么,懂了吗?委托的最基本的用处就是给你在一个方法里面挖一个坑,当你需要使用这个坑的时候,把他填上就可以了