注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 linux服务---DHCP
 帮助

.net编程基础-事件和委托


2007-12-21 10:42:00
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://susucj.blog.51cto.com/287674/56054
         委托实际上是一个维护指向方法的指针的列表的类;而事件是实际上委托的一个实例。
在C#中
         形如:public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);定义一个委托。通过reflector查看编译后的代码可以发现实际上AlarmEventHandler继承自MulticastDelegate,而MulticastDelegate又继承自Delegate。编译器根据delegate关键字为产生了一个构造函数和 BeginInvoke,EndInvoke,Invoke这几个方法,只所以由编译器产生这几个方法,主要是为了获得强类型的支持(也就是我们以后调用这些方法的时候可以获得编译器的语法检查支持,而不是依赖于运行时)
       形如:public event AlarmEventHandler Alarm;申明一个事件通过reflector查看编译后的代码可以发现实际上Alarm就是AlarmEventHandler,只不过在这里编译器根据event 关键字产生了remove_Alarm和add_Alarm这两个方法,以后我们可以通过clock.Alarm += new AlarmEventHandler(up.AlarmRang);这样的语句为事件添加事件处理器,这个语句实际上是调用的add_Alarm,移除一个事件也是同样的道理。
       最后要说明的就是AlarmEventArgs了实际上这就是一个普通的类用来在事件发送者和接收者之间传递数据
      附件中是MSDN中提供的文章中使用的例子的源代码

本文出自 “坚持-再坚持” 博客,请务必保留此出处http://susucj.blog.51cto.com/287674/56054


附件下载:
  源代码




    文章评论
 
2007-12-21 10:45:14
下载 看源代码 呵呵

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: