事件,委托,处理器 Event, Delegate, Handler
来源:互联网 发布:js 时间间隔天数 编辑:程序博客网 时间:2024/05/04 01:41
在C#或者说.Net的事件处理机制中,有三个关键的概念 - 事件(Event),委托(Delegate)和处理器(Handler),另外在面向对象的背景中,还有另外两个概念 - 发送者(Sender),接收者(Receiver)。
后面两者,Sender和Receiver比较容易理解,而前面3者则容易让人混淆,下面的内容试图对它们进行解释和澄清。
事件(Event)通常是类实例的属性,它可以被raise。当它被raise的时候,在事件属性上绑定的处理器(Handler)就会被调用,而处理器通常就是具有特定签名的函数。
而委托(Delegate)则是类型,用来定义事件属性。事件属性所关联的对象就是Sender,它通常作为Handler调用的第一个参数,而被调用的Handler函数所关联的对象则是Receiver。
在C#中,event关键字用于事件属性的声明,使得事件属性可区别于一般属性成为语言中first class的元素。
在下面的例子中:
Sent,是事件属性
EventHandler<EventArgs>,是委托类型
public void Handler(object sender, EventArgs e),是处理器函数
namespace ConsoleApplication1{ class Sender { public event EventHandler<EventArgs> //delegate type Sent; //event public void Send() { EventHandler<EventArgs> handler = Sent; if (handler != null) handler(this, EventArgs.Empty); } } class Receiver { public void Handler(object sender, EventArgs e)//handler { Console.WriteLine("Receive : " + sender.ToString() + ", " + e.ToString()); } } class Program { static void Main(string[] args) { Sender sender = new Sender(); Receiver receiver = new Receiver(); sender.Sent += receiver.Handler;//delegate event to handler sender.Send(); System.Console.Read(); } }}
- 事件,委托,处理器 Event, Delegate, Handler
- 事件(event)与委托(delegate)
- 委托(delegate)和事件(event)
- Delegate委托 和 Event事件
- C# delegate 委托 event 事件
- event & delegate Demo(事件&委托示例)
- C#:委托(delegate)和事件 (event)
- 委托(Delegate) 和 事件(Event)
- 回调(Callback), 委托(Delegate), 事件(Event)
- Delegate 和 Event (委托和事件)
- .Net: delegate(委托)、event(事件) 应用
- C#委托(delegate与事件(Event)
- Delegate 和 Event (委托和事件)
- C#委托delegate与事件event
- C#中的委托(Delegate)和事件(Event)
- C#中的委托(Delegate)和事件(Event)
- C#委托(delegate与事件(Event)
- C#中的委托(Delegate)和事件(Event)
- NetBeans的Struts2插件
- 与老兵的谈话!
- CLR 的线程池
- 网上查询类网站!太恐怖了,什么都能查!!!!!(请注意最后)特实用!收藏吧!
- 关于最近公司开展内训讲课实例代码等架构设计方面的案例说明
- 事件,委托,处理器 Event, Delegate, Handler
- 不同服务器数据库之间的数据操作(1)
- 变量的属性(全局变量、局部变量、动态变量、静态变量等)
- 重装系统后,如何让电脑更快?
- 别人的面试记实
- 编辑器
- 常见的abap面试题目
- c# 多维数组的使用
- Apache不能启动,迅雷占用80端口