您的位置:首页 > 编程语言 > C#

学习笔记之---C#中的委托与事件

2012-06-08 10:54 525 查看

首先抛砖引玉,谈一下本人对委托和事件的理解,然后再引用jimmy.zhang所讲的委托和事件的例子,希望能对还不是很清楚委托和事件的朋友有所帮助。

本人的理解:

委托:

1、 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性.

2、 委托只是定义了一个方法的原型.它的实现包含:

声明委托类型
定义与委托类型符合的方法
声明委托变量
初始化委托实例
调用委托

3、 注意: 定义一个委托是指定义一个新类,委托实现为派生于基类System.MulticastDelegate的类, System.MulticastDelegate又派生于基类System.Delegate.C#编译器知道这个类,会使用其委托语法,因此我们不需要详细了解此类内部实现,这是C#与基类共同合作,使编程更易完成.

4、 注意: 在术语方面有个问题,类有两个不同的术语中:‘类’表示广泛的定义,‘对象’表示类的实例,但委托只有一个术语,在创建委托实例时,所创建的委托实例仍称为委托.

5、 给定委托的实例可以表示任何类型的任何对象上的实例方法或静态方法---只要方法的签名与委托符合.

事件:

1、 事件处理程序不能有返回值.

2、 事件注册方法类似于多播委托,可多播委托是根据注册方法时顺序执行,而事件却没有,方法执行顺序不可预估.

3、 .NET建议标准声明事件的委托必须无返回值,则有object, EventArgs 两参数.第一个参数是表示引发事件的对象,第二个参数是包含有关事件的其他有用信息的对象,可记录发生事件现场.可直接使用系统提供的 EventHandler.

4、 虽然声明事件时使用public修饰符,但编译成IL时仍转换成private.

5、 事件是委托的进一步封装.

他人的精华:

想必大家都知道网上一些讲委托和事件的例子,本人认为jimmy.zhang的这篇写的最好,最容易让还不是很清楚委托与事件的朋友豁然开朗。原文地址:http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: