当前位置: 首页 > 后端技术 > Java

委托和事件的定义和使用

时间:2023-04-01 22:09:56 Java

1.1.1委托定义和使用委托是一种动态调用方法的类型,与类、接口、数组属于引用类型。注意:委托实际上定义了一个方法模板,只要返回值类型和形参列表与模板一致,就可以使用委托类型进行实例化。委托对象本质上表示对方法的引用。在.NETFramework中,委托具有以下特征。(1)委托类似于C++函数指针,但与指针不同的是,委托是完全面向对象的安全数据类型。(2)委托允许方法作为参数传递。(3)委托可以用来定义回调方法。(4)委托可以将多个方法连接在一起,这样当一个事件被触发时,可以同时启动多个事件处理器。委托(delegate)声明的一般形式:[访问修饰符]委托返回值类型委托名称([参数列表]);如:publicdelegateintDo(intx);上面的语句声明了一个名为“Do”的public,这个委托的返回值类型是一个整数。例如:publicdelegatevoidwt(intx);定义一个名为wt的委托,它没有返回值,x带有整数参数。如何使用让我们看一下代码示例:namespaceCexercise{publicdelegatevoidwt(intx);classProgram{publicstaticvoidAdd(intx)//定义一个静态方法Add,注意这个方法的返回值类型同参数和delegate{Console.WriteLine(x+x);//输出x+x的值}publicstaticvoidCheng(intx)//同上{Console.WriteLine(x*x);}staticvoidMain(string[]args){wtj=添加;//用delegate定义j并调用Add方法j+=Cheng;//+表示在j的基础上添加Cheng方法j-=Cheng;//-表示将方法j添加到j中移除Cheng方法j(3);}}}则输出结果为:61.2匿名方法:将代码块作为参数传递,避免单独定义方法。委托类型委托变量名=delete(){};命名空间C练习{publicdelegatevoidwt(stringname);classProgram{staticvoidMain(string[]args){wtwt1=delegate(stringname){Console.WriteLine("{0},我是匿名方法。",name);};wt1("张三");}}}2.事件命名空间C练习{publicdelegatevoidwt(intx);publicstaticvoidAdd(intx){Console.WriteLine(x+x);}publicstaticeventwtsj;staticvoidMain(string[]args){sj+=Add;sj(8);}}