C#的委托和java里的委托

C#:委托是方法的代理,委托的是方法,当调用委托时就调用了它的方法,是一类行为的抽象,是一种自定义数据类型。它有统一的返回类型和参数。1.定义委托:访问级别 delegate 返回值 委托的名称(参数组成) delegate void Handler(); 2.创建委托:Handler handler = new Handler(Fun);Fun是当前类中的方法名称。3.调用委托,  handler();

委托分类:单播委托:一个委托对象只关联一个方法,多播委托:一个委托对象关联多个方法(事件)。

实例化委托的四种写法:1.Handler handler = new Handler(Fun); 2.Handler  handler = Fun;3.handler = delegate(int a) {...};4.Lambda表达式:handler = (p) => Console.WriteLine(p + "HAHA");但是有几项需要注意:1.1个参数的类型可以不写。2 如果是一个参数小括号()省略【0个或2个及2个以上不能省略】。3 语句体是一条语句.大括号{}省略,如果同时有return ,return 也必须省略。

委托的作用:1.将方法做为参数传递(这样可以调用的是一类方法,而不是某个方法),可以将一个方法的执行代码注入到另一个方法中。 委托将方法的决定权留给了调用端(实例化委托)。当客户有多样性的须求时或者定义一个方法时,这个方法的某些步骤确定不下来。确定不下来的用委托表示,留给客户端确定。2.实现回调,实现的方式比接口更灵活,委托也可以代表静态方法。

事件: 委托时事件实现的基础。是声明为委托类型的类的成员【事件是委托的一种使用方式】表示类的偶发的行为。一旦这个行为发生, 往往要引起其他行为的自动执行。(引起响应) 事件是用来实现两个或多个行为的联动调用。事件是一种设计模式:观察者设计模式,通知设计模式【通知模型】。定义事件:public event 委托类型 事件名;event可以省略,如果event省略 ,事件名就是委托对象 实例的时候可以根据委托的用法,注册事件的时候可以省略+号 如果event 不省略, 那么+号必须有。注册事件:事件源对象.事件+= 响应方法(响应的类的对象+响应方法名 (不能有小括号))。 通过注册事件把两个行为联动在一起,事件源:定义事件所在的那个类就叫事件源,就是事件的发出者。响应者:行为2在的类 (有时跟事件源一个类 也就是调自己的行为)。+= 是注册符号, -= 是取消注册符号。触发事件/调用事件:调用事件的方式与调用委托的方式一样(如果有参数和返回值,调用事件的时候跟 调用委托一样要给参数和可以接收返回值(可选))。也可以间接触发事件:调用封存事件的方法。并且响应方法也要有对应的返回值和参数。

可是在java中没有委托,就只能自己用反射的一些机制来实现了。java中的/** */这种注释可以用于制作帮助文档。 连接为java里的事件项目demohttps://download.csdn.net/download/weixin_39407066/10758773

猜你喜欢

转载自blog.csdn.net/weixin_39407066/article/details/83621092