zoukankan      html  css  js  c++  java
  • 委托与事件的关系

    说道"委托"这个词我们肯定都不会陌生吧,生活中"委托"就是请别人帮我们做事。

    程序中也是如此,委托机制是.Net中特有的,我们可以将方法作为参数传给委托,让委托帮我调用执行方法。

    先来看看委托是如何定义的:

    [访问修饰符] delegate 返回值 委托名([参数]);

    委托类似于C/C++中的函数指针,但是它们又有一些区别,并不是完全等价的。

    说到指针,很多人肯定又晕,指针其实就是地址,而函数指针就是函数的地址或者说函数的入口,这样说相信我们会好理解一点。

    委托是一种类型,可以存储多个方法的列表,而函数指针只能存储一个函数的指针,除非使用指针数组才可以存储多个函数的指针。

    好了,言归正传。下面我们来看看事件是什么玩意?

    我们定义一个事件是使用event关键字,其实事件就是委托类型变量,这是不是出乎很多人的意料?

    event关键字主要是为了限制我们在外部调用委托,只允许在类内部调用委托,并且只能通过+=和-=来追加移除方法。

    下面我们定义一个事件:

    public event void MyDelegate dele;

    然后我们通过Reflecator反编译可以看到:

    事件的本质其实就是一个私有委托和两个方法(add和remove方法)

    有点类似字段和属性,事件就是在类内部对委托进行了封装。

    所以说事件其实一个阉割后的委托。

  • 相关阅读:
    linux之查找文件,目录命令
    linux文件操作常用命令
    linux打包解包压缩解压命令
    linux目录操作常用命令
    php读取文件行数方法
    前端入门之——javascript day8 DOM对象(DHTML)
    前端入门之——javascript day8
    前端入门之——css day5 作业。编写一个简单的网页
    前端入门之——css day4
    前端入门之——css day3
  • 原文地址:https://www.cnblogs.com/rampb/p/3547362.html
Copyright © 2011-2022 走看看