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

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/stemon/p/4433297.html
Copyright © 2011-2022 走看看