c sharp 委托和事件

c sharp 委托和事件

ID:11460879

大小:788.50 KB

页数:33页

时间:2018-07-12

c sharp 委托和事件_第1页
c sharp 委托和事件_第2页
c sharp 委托和事件_第3页
c sharp 委托和事件_第4页
c sharp 委托和事件_第5页
资源描述:

《c sharp 委托和事件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章委托和事件本章目标理解委托使用委托事件处理机制2委托委托是什么?C#中的一种引用类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值3委托使用委托的理由在运行的时候,我们才知道该调用哪个方法,在这之前我们只知道方法的返回类型和将要传递给方法的参数,至于哪个方法去执行,我们并不知道,其实我们也不关心,我们关心的是方法执行的结果委托是一种安全的类型操作4委托使用委托的步骤定义一个委托创建委托实例将方法的细节传递给委托实例调用委托方法5定义委托语法:修饰符delegate返回类型委托

2、名称(参数列表);委托的定义类似于类的定义,将定义委托可以看作是定义一个类,不过这个类没有具体的内容从具体的语法上看,定义委托类似于方法的定义,因为我们可以通过委托来调用方法,所以在委托定义的时候要声明方法的返回类型和参数列表6创建委托实例,包装方法语法:修饰符委托实例名称=new委托名称(方法名称);实例化委托类似于类的实例化方法名称:可以是静态方法,也可以是对象方法7调用委托方法语法:委托实例名称(参数);变量=委托实例名称(参数);调用委托方法,类似于调用普通方法,但这个时候,已经将各个方法的细节隐藏起来了,只能看到委托执行的结果8委托示例

3、9委托示例10多播委托语法:委托第一个方法委托引用=new委托名称(方法名称);第二个以后的方法委托引用+=new委托名称(方法名称);可以将多个方法委托给一个委托实例,那么委托在调用的时候,只返回最后一个方法的返回值,前面方法的返回值被冲掉了,因此在一个委托实例中封装了多个方法时,应该将委托的返回类型定义为void在将方法添加到委托链的时候,只关心方法的返回类型和参数,不关系方法是否是静态的,是否是同一个对象的也无关紧要11多播委托语法:委托第一个方法委托引用=new委托名称(方法名称);第二个以后的方法委托引用+=new委托名称(方法名称);

4、可以将多个方法委托给一个委托实例,那么委托在调用的时候,只返回最后一个方法的返回值,前面方法的返回值被冲掉了,因此在一个委托实例中封装了多个方法时,应该将委托的返回类型定义为void12多播委托在将方法添加到委托链的时候,只关心方法的返回类型和参数,不关系方法是否是静态的,是否是同一个对象的也无关紧要可以将方法添加到委托对象中,同样也可以从委托对象中删除方法语法委托引用-=new委托名称(方法名称);13多播委托示例14多播委托示例15委托特点委托允许将方法作为参数进行传递我们不传具体的参数,改传方法的名字为参数了委托可以链接在一起不光可以链接在

5、一起,还可以从链条中去除16事件回顾Java中的事件处理机制事件源,事件,监听器事件:是类或者对象用来“发出通知”的成员,通过提供事件的句柄,客户能够把事件和可执行代码联系在一起17事件发送器:发送事件的对象,负责引发事件接收器:在事件发生时,被通知的对象事件发送器并不知道谁将来处理事件,而接收器也不知道什么时候事件将会发送过来18事件中的对象分析产生事件的对象处理事件的对象如何引发事件如何通知处理事件对象处理事件19事件中的对象分析产生事件的对象这个对象只负责产生事件,并且将事件传送出去,它本身并不处理事件处理事件的对象这个对象只负责接受和处理

6、事件,并将处理后的结果返回给产生事件的对象20事件中的对象分析如何引发事件一般的在现实世界中,引发事件都是通过调用一个方法来引发一个事件的21事件中的对象分析谁引发事件产生事件的对象那么引发事件的方法应该在什么地方?在产生事件的对象内部,调用这个对象的方法去引发一个事件引发事件的方法干什么事?通知处理事件的对象处理这个事件产生事件的对象是否知道处理事件对象中的哪个方法去处理事件?不知道,也不屑于知道,为什么?怎样才能做到引发事件后,就有一个处理事件对象的方法去处理事件使用委托22事件中的对象分析怎么使用委托在产生事件的对象中包含一个委托对象,当然

7、在这个对象中,我们不知道将使用哪个方法来处理这个事件,没关系,我们可以在这个对象的外部给它添加有了委托,在哪里调用委托?在引发事件的方法中调用这个委托,记不记得调用委托就像调用什么?调用方法嘛23事件中的对象分析处理事件的对象如何处理事件?这就是你的事了,想怎么处理就怎么处理24事件中的对象分析小小总结产生事件的对象内部应该包含引发事件的方法委托对象(委托链表是空的,用的时候再添加方法)引发事件就是调用一个产生事件的对象内部的方法处理事件就是在事件处理对象的内部有一个和产生事件的对象内部的委托签名相同的方法,在这个方法内部写代码吧25事件中的对象

8、分析升华现在为止,我们认为事件仅仅是个委托而已在类的内部将委托作为一个字段,在C#中我们使用event关键字将委托引用声明为一个事件,这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。