zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Android ContentProvider 简介
    Android Broadcaset 简介
    Android Service 简介
    XML SAX解析
    XML DOM解析
    RSS新闻阅读器
    XML PULL模型
    Android调用 Webservice报org.ksoap2.serialization.SoapPrimitive(转)
    Android调用Asp.net Web Service示例
    Eclipse编辑器基本设置
  • 原文地址:https://www.cnblogs.com/stemon/p/4433297.html
Copyright © 2011-2022 走看看