首页 > 其他 > 详细

委托事件

时间:2017-09-02 15:00:20      阅读:236      评论:0      收藏:0      [点我收藏+]
委托声明实例化调用

 委托是一个类型,大部分情况声明的和类同级别。偶尔会嵌套在类内部。

技术分享
delegate string OneRetOnePar(string p_Name);

#region 简单委托
OneRetOnePar ornp = new OneRetOnePar(u.GetUserName);
Console.WriteLine(ornp("藏锋"));
#endregion
View Code

委托可以认为是一个具有相同参数返回值的方法地址集合,返回最后一个方法的返回值。

多播委托

委托可以进行

 +=

-+(匿名方法减不掉)

维护一个方法列表

不能begininvok()异步调用

委托作用和意义

 委托是一个关键字,但是他是一个类型,因为他编译之后生成的类型继承了MulticastDelegate

技术分享

技术分享

 1、异步多线程,都是基于委托的。

3、封装 扩展 解耦,因为委托是一个类型,用的时候实例化成一个对象,   把一段逻辑封装到已给变量里面,可以把逻辑作为参数传递,达到逻辑拆分,具有扩展性(下端不要写死,上单定制逻辑)。也可以可以达到解耦的作用。最常见的就是linq   where()里面的条件逻辑(委托),

2、多播委托(不能异步)

技术分享

包含了三个方法,基类为多波委托

技术分享异步三个参数  第一个为方法参数 第二个为回调函数(可为NULL)  第三个为状态(可为NULL)

观察者模式

 事件发布者(就是事件所在的类)

订户(具体的操作方法)

订阅(把方法绑定到事件上的动作叫做订阅)

事件

 事件是委托的一个实例

委托是一个类型

技术分享

从图上可以看出,事件是在委托委托前面加了一个event。

event只能由声明event的类调用(添加了控制权限)。event关键字控制了委托实例的权限

技术分享

中间语言中事件会自动生成两个方法,来操控委托 

 

代码下载

委托事件

原文:http://www.cnblogs.com/wudequn/p/6733085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!