前面说了委托,接下来就要说一说事件了,同时最后再说一下委托和事件的区别。
事件和委托很相似,事件就好像是被简化的针对特殊用途的委托。看下面的图:
结合前面说的委托的知识,事件的组件应该是这个样子的:
看到发布者必须有触发事件的代码,也就是必须为事件的调用留有接口,不能直接调用事件(不要觉得事件是委托类型的)。这里要强调的是事件是成员,是发布者的一个成员,它不是类型,它的类型是委托类型的。
虽然事件是委托类型的,但是事件对委托做了一次封装,并且事件封装的委托是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