[C#参考]事件和委托的关系

前面说了委托,接下来就要说一说事件了,同时最后再说一下委托和事件的区别。

事件和委托很相似,事件就好像是被简化的针对特殊用途的委托。看下面的图:

从这张图中能看到,事件是发布者的一个成员,它不是类型。

结合前面说的委托的知识,事件的组件应该是这个样子的:

看到发布者必须有触发事件的代码,也就是必须为事件的调用留有接口,不能在发布者类外部调用事件(不要觉得事件是委托类型的,并且声明为了public,就能在发布者类外调用)。这里要强调的是事件是成员,是发布者的一个成员,它不是类型,它的类型是委托类型的

虽然事件是委托类型的,但是事件对委托做了一次封装,并且事件封装的委托是private的,所以是不能从发布者外部直接调用使用的,必须通过接口调用。

事件提供了对它的私有控制委托的结构化访问。与委托中的许多其他操作不一样,对于事件只可以添加、删除或者调用事件处理程序。

再看下面这幅图:

从这幅图中也能看到事件是发布者类的成员,它提供了对自己内部私有控制的委托的结构访问。

 http://www.cnblogs.com/chengxingliang/archive/2013/05/21/3051912.html

http://www.blogjava.net/hongzionline/archive/2008/07/28/145050.html

http://www.360doc.com/content/11/0719/10/654841_134444949.shtml

http://blog.csdn.net/chopper7278/article/details/3145000

http://www.cnblogs.com/kklldog/archive/2012/01/17/2324228.html

http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

 

posted @ 2015-04-16 21:10  stemon  阅读(665)  评论(0编辑  收藏  举报