A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐宏伟 中级黑马   /  2012-9-6 10:07  /  1936 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、委托是一个类型;
2、委托是一个容器;
3、委托可以作为参数;
4、委托也可以作为返回值;
但是委托操作的时候存在不安全问题;于是就出现了事件,那么事件的本质是什么?事件和委托之间的本质区别或者说本质关系是什么?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

3 个回复

倒序浏览
1 . .NET里面的事件本质上是对消息的封装;
2.  事件是委托的一种特殊形式,它要求委托的返回值类型是void,也就是多路广播。
回复 使用道具 举报
定义一个委托:
public delegate void PubComputerEventHandler(object sender, PubEventArgs e);
定义一个与该委托相关联的事件:
public event PubComputerEventHandler PubComputer;

其中,委托是一种类型,而事件不是类型,它只是一个方法。
在事件中包含有一个委托链,所以可以将委托直接赋值给事件,其实就是赋值给事件中包含的委托链,所以看起来事件就像是委托一样。
而调用一个事件,就是调用这个事件中包含的委托链,也就是调用与这个委托链相关联的所有方法。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
本质:事件与委托本质是一样的,但也有一些区别:

    A、使用委托时允许外界直接触发事件,而事件必须由事件源对象自己引发(间接引发)。

    B、以Delegate作为委托类型的后缀,以EventHandle作为事件委托的后辍,是规范的命名规

委托与类,结构,接口,枚举是一类,而事件属类成员,和属性,方法,字段是一类

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马