C# 的委托与事件

来源:互联网 发布:c语言循环代码 编辑:程序博客网 时间:2024/05/21 18:30

C#中的委托与事件

今天开始学C#中的委托与事件了,感觉好难。虽然之前学校学过函数指针的东东,但是还是很吃力,不知道到底该怎么理解,怎么用。上面的文章对我帮助很大。膜拜大神!

++++++++++++++++++++++++++++++我是分割线+++++++++++++++++++++++++
昨天太草率了,没有讲自己的理解。今天补上。

首先了解事件的由来:
事件的前身是消息(Message)。Windows是消息驱动的操作系统,运行其上的程序也遵照这个机制执行。消息本身就是一条数据,这条数据里记载着消息的类别,必要时还记载着一些消息参数。比如,当你在窗口上点击了鼠标的左键,一条名为WM_LBUTTONDOWM的消息就生成了,并被加入到Windows待处理的消息队列中——大部分情况下Windows的消息队列不会有太多的消息在排队,消息会被立刻处理。如果你的计算机很慢并且处在很忙的状态(如播放些什么微电影啊),那么这条消息就要等待一会才会被处理到,这就是常见的操作系统反应延迟。当Windows处理到这条消息时会把消息发给你单击的窗体。窗体会用自己的一套算法来响应这个消息,这个算法就是Windows API开发中常说的消息处理函数。消息处理函数中有一个多级嵌套的switch结构,进入这个switch结构的消息会被分门别类并最终流入某个末端分支,在这个分支里会有一个程序员编写的函数被调用。 ————摘自《深入浅出WPF》刘铁猛
而事件的定义为
event ;
定义表明事件实际上就是一个使用event关键字修饰的委托类型成员变量,事件处理器则是一个函数。说A订阅了B的事件,本质上就是让B.Event与A.EventHandler关联起来。所谓事件激发就是B.Event被调用,这是与其关联的A.EventHandler就会被调用。 ————摘自,同上

个人理解:委托只是声明了一个函数指针,声明了一种新的类型,之说以需要委托,是因为需要一种类型来表示事件。
而事件才是真正实现消息的。其中有发布器和订阅器,发布器是用来触发事件的,而订阅器是用来处理发生时间后,与之关联过后的对象的表现,或者一些状态的改变。

原创粉丝点击