自己整理的北大青鸟C#教程chp06.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自己整理的北大青鸟C#教程chp06

第六章 委托和事件 本章目标 理解委托 使用委托 事件处理机制 委托 委托是什么? C#中的一种引用类型 ,一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值 委托 使用委托的理由 在运行的时候,我们才知道该调用哪个方法,在这之前我们只知道方法的返回类型和将要传递给方法的参数,至于哪个方法去执行,我们并不知道,其实我们也不关心,我们关心的是方法执行的结果 委托是一种安全的类型操作 委托 使用委托的步骤 定义一个委托 创建委托实例 将方法的细节传递给委托实例 调用委托方法 定义委托 语法: 修饰符 delegate 返回类型 委托名称(参数列表); 委托的定义类似于类的定义,将定义委托可以看作是定义一个类,不过这个类没有具体的内容 从具体的语法上看,定义委托类似于方法的定义,因为我们可以通过委托来调用方法,所以在委托定义的时候要声明方法的返回类型和参数列表 创建委托实例,包装方法 语法: 修饰符 委托实例名称 =new 委托名称(方法名称); 实例化委托类似于类的实例化 方法名称:可以是静态方法,也可以是对象方法 调用委托方法 语法: 委托实例名称(参数); 变量=委托实例名称(参数); 调用委托方法,类似于调用普通方法,但这个时候,已经将各个方法的细节隐藏起来了,只能看到委托执行的结果 委托示例 委托示例 多播委托 语法: 委托第一个方法 委托引用=new 委托名称(方法名称); 第二个以后的方法 委托引用+=new 委托名称(方法名称); 可以将多个方法委托给一个委托实例,那么委托在调用的时候,只返回最后一个方法的返回值,前面方法的返回值被冲掉了,因此在一个委托实例中封装了多个方法时,应该将委托的返回类型定义为void 在将方法添加到委托链的时候,只关心方法的返回类型和参数,不关系方法是否是静态的,是否是同一个对象的也无关紧要 多播委托 语法: 委托第一个方法 委托引用=new 委托名称(方法名称); 第二个以后的方法 委托引用+=new 委托名称(方法名称); 可以将多个方法委托给一个委托实例,那么委托在调用的时候,只返回最后一个方法的返回值,前面方法的返回值被冲掉了,因此在一个委托实例中封装了多个方法时,应该将委托的返回类型定义为void 多播委托 在将方法添加到委托链的时候,只关心方法的返回类型和参数,不关系方法是否是静态的,是否是同一个对象的也无关紧要 可以将方法添加到委托对象中,同样也可以从委托对象中删除方法 语法 委托引用-=new 委托名称(方法名称); 多播委托示例 多播委托示例 委托特点 委托允许将方法作为参数进行传递 我们不传具体的参数,改传方法的名字为参数了 委托可以链接在一起 不光可以链接在一起,还可以从链条中去除 事件 回顾Java中的事件处理机制 事件源,事件,监听器 事件:是类或者对象用来“发出通知”的成员,通过提供事件的句柄,客户能够把事件和可执行代码联系在一起 事件 发送器:发送事件的对象,负责引发事件 接收器:在事件发生时,被通知的对象 事件发送器并不知道谁将来处理事件,而接收器也不知道什么时候事件将会发送过来 事件中的对象分析 产生事件的对象 处理事件的对象 如何引发事件 如何通知处理事件对象 处理事件 事件中的对象分析 产生事件的对象 这个对象只负责产生事件,并且将事件传送出去,它本身并不处理事件 处理事件的对象 这个对象只负责接受和处理事件,并将处理后的结果返回给产生事件的对象 事件中的对象分析 如何引发事件 一般的在现实世界中,引发事件都是通过调用一个方法来引发一个事件的 事件中的对象分析 谁引发事件 产生事件的对象 那么引发事件的方法应该在什么地方? 在产生事件的对象内部,调用这个对象的方法去引发一个事件 引发事件的方法干什么事? 通知处理事件的对象处理这个事件 产生事件的对象是否知道处理事件对象中的哪个方法去处理事件? 不知道,也不屑于知道,为什么? 怎样才能做到引发事件后,就有一个处理事件对象的方法去处理事件 使用委托 事件中的对象分析 怎么使用委托 在产生事件的对象中包含一个委托对象,当然在这个对象中,我们不知道将使用哪个方法来处理这个事件,没关系,我们可以在这个对象的外部给它添加 有了委托,在哪里调用委托? 在引发事件的方法中调用这个委托,记不记得调用委托就像调用什么? 调用方法嘛 事件中的对象分析 处理事件的对象如何处理事件? 这就是你的事了,想怎么处理就怎么处理 事件中的对象分析 小小总结 产生事件的对象内部应该包含 引发事件的方法 委托对象(委托链表是空的,用的时候再添加方法) 引发事件就是调用一个产生事件的对象内部的方法 处理事件就是在事件处理对象的内部有一个和产生事件的对象内部的委

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档