《C#程序设计》课件第7章委托与事件.pptx

《C#程序设计》课件第7章委托与事件.pptx

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

委托与事件思政目标:?科学观念对学习有决定性作用,通过编程培养科学观念?通过委托与事件的学习,提高抽象思维能力技能要求:?掌握委托与事件的基本概念?了解委托与事件的使用?了解匿名方法与普通方法的区别、匿名类的创建Lambda表达式的使用实践目标:?根据示例,对所学的概念进行验证?熟练应用面向对象方法实现编程设计第7章

委托事件匿名方法Lambda表达式

委托01PART

委托的作用在于:可以将方法引用封装在委托对象内,然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。通俗的说就是:通过委托,我们可以把方法当成参数传递。委托和类相同,是一种用户自定义的类型。类的表示是通过数据和方法进行集合,而委托则持有一个或多个方法,以及一系列预定义操作。委托的使用要注意以下五个内容:(1)声明一个委托类型。委托声明和方法声明相似,只是没有实现块。(2)使用该委托类型声明一个委托变量。(3)调用委托与调用方法的语法相同。调用委托时,其包含的每一个方法都会被执行。(4)创建委托类型的对象,赋值给委托变量。其中,新的委托对象包括指向某个方法的引用。这个方法和第一步定义的签名和返回类型一致。(5)委托对象可增加其他方法。这些方法必须与第一步中定义的委托类型有相同的签名和返回类型。委托的定义委托

1.声明委托委托的使用委托是类型,与类的声明相同,委托类型必须在被用来创建变量以及类型的对象之前声明。委托的声明看上去与方法的声明很相似,有返回类型和签名。返回类型和签名指定了委托接受的方法的形式。委托的声明与方法的声明不同之处是,委托以delegate关键字开头,且没有方法主体。委托此句声明一个委托,其中,MyDelegate即为该句所声明的委托名字。该委托能够指向的方法签名特性是:返回值为int类型,两个参数,且两个参数都是int类型。若参数类型不同,则需要考虑参数的顺序问题。

2.实例化委托的使用委托是引用类型,因此有引用和对象。在委托类型声明之后,我们可声明变量并创建类型的对象委托经过此句的实例化,pMethod以后可以代替myMethod()方法来执行任务。

3.调用委托的使用调用委托和调用方法类似。用于调用委托的参数将会用于调用列表中的每一个方法,其格式如下:pMethod(参数列表);委托

3.调用委托的使用委托

多播委托委托多播委托就是可以引用的多个函数的委托,其本质是对System.MulticastDelegate类(为System.Delegate的子类)的继承和实现。一般情况下,多播委托的返回值为void。另外,虽然使用多播委托可以按照顺序调用多个方法,但最终的结果只能是从其所调用的最后一个方法中得到。多播委托给委托添加方法调用的方式是使用运算符+和+=,同样,给委托删除方法调用的方式是使用运算符-和-=

多播委托委托多播委托和单播委托的调用方式一样,但在执行时,多播委托会依次执行所有指向的方法序列。例如,将上面的代码依次执行method1、method2和method3从执行结果可以看到:(1)多播委托中各个方法都会被执行,且执行顺序与+=的操作顺序一样。(2)多播委托如果有返回值,则只返回最后一个函数的执行结果

事件02PART

事件事件的使用方法和委托相关,下面通过一个例子来了解事件。校园运动会的长跑项目中,裁判员一般是通过打枪的方式表示比赛开始,参加长跑的同学在听到枪声后起跑,其中枪声是事件,裁判员通知该事件发生,而参加长跑的同学在听到枪声后起跑就是这个事件发生后的动作。另外,不参加长跑的同学对枪声不会有反应。在此过程中,有两个主要方:产生事件的对象(裁判员)和接收事件的对象(参加该项目的同学),其中,产生事件的对象也称为事件发生者或事件触发者,接收事件的对象也称为事件订阅者或事件接收者事件

事件的使用在所有类之外为事件定义一个public修饰的委托,由于事件为多播委托,故定义时返回类型应为void事件1.定义事件委托

事件的使用使用事件,需要有事件触发的源头,故应先定义一个事件触发类,然后在该类内部使用event关键字与上述委托一起定义一个public的事件事件2.定义事件触发类(用于产生事件)该类中,当特定的动作发生或消息到达时就触发所定义的事件,一般用一个方法完成事件触发。

事件的使用MyEventArgs可以为自定义参数类型,也可以为内置类型,当然也可以不要该参数。这样,外界即可通过如图下来触发事件事件2.定义事件触发类(用于产生事件)eventSrcInstance即eventSrcClass实例化对象。事件的真正触发代码即在该方法中。一般地,发生事件时,第一个参数为事

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档