- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C# 程序设计 刘兵 制作 第8章 委托与事件 委托和多重委托 委托调用 事件 事件与委托的区别 8.2.2 事件定义与触发 程序代码8-6:事件的定义和触发 程序代码8-7:事件实现的步骤 在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 * * 8.1 委托 委托(Delegate)也称为“代表”,或者“指代”,是一种特殊的数据类型 派生于System.Delegate类。 委托对象主要用来保存对方法的引用,即指可以调用目标方法,并且是定义了目标方法名的一种特殊对象。 8.1.1 声明委托 在C#中使用一个类时,分两个阶段: 首先要定义一个类,即告诉编译器该类由什么字段和方法组成; 然后实例化类的一个对象。 8.1.1 声明委托 使用委托时,也需要经过这两个步骤: 首先定义要使用的委托,其实委托的定义就是告诉编译器代表了哪种类型方法 然后创建该委托的一个或多个实例。 8.1.1 声明委托 委托声明是以delegate关键字开头,后面跟的是委托名,该委托名是进行实例化时所使用的方法名。委托声明语法格式如下: [访问修饰符] delegate 返回类型 委托名([参数列表]) 例如: public string MergeString(string s1, string s2) 委托声明本身并不指向任何方法,因此委托是不可以直接被调用的。 但是,可以通过委托(声明)来实例化对象,这样的对象就被称为委托实例。 委托实例的创建与用类实例化一个对象类似,但有一个约定,要把目标方法的方法名作为参数传入 8.1.1 声明委托 public void Print(string s1, string s2) { TestDelegate lbDelegate = new TestDelegate(MergeString); string newString=lbDelegate(s1, s2) Console.WriteLine(newString); } 8.1.1 声明委托 程序代码8-1是一个完整的委托实现方法的代码 8.1.1 声明委托 8.1.2 实例化委托 1.使用new操作符实例化委托 委托跟普通类一样,可以使用new操作符实例化,程序代码8-2就是采用new操作符实例化委托。 8.1.2 实例化委托 1.使用new操作符实例化委托 委托除了调用实例方法还可以引用静态方法,如果程序代码8-2中的PersonInfo方法是静态的,则只需要在下面的代码中进行调用而不需要先实例一个Program对象: static void Main(string[] args) { CallBack cb = new CallBack(Program.PersonInfo); cb(刘兵, 35); } 8.1.2 实例化委托 2.用有名方法实例化委托 有名方法实例化委托会检测所保存的函数引用是否和声明的委托匹配。程序代码8-3说明有名方法实例化委托。 8.1.2 实例化委托 3.用匿名方法实例化委托 用匿名方法实例化委托,即将匿名方法赋给委托。注意:匿名方法中的变量的生命周期将扩展到委托的生命周期。程序代码8-4说明匿名方法实例化委托。 8.1.3 多重委托 允许通过委托对象加括号的调用方法,体现了委托与方法之间的紧密联系,但委托不是方法,委托属于一种数据类型。 一个委托数据类型对象不仅可以封装一个方法,还允许同时封装多个与委托类型相匹配的方法,这称为多重委托,也称为委托的“多播机制”。 8.1.3 多重委托 多重委托使用“+=”来添加委托,使用“-=”来移除委托。 多重委托包含的方法,其返回的数据类型必须是void,否则会抛出run-time exception错误。因为方法的返回值不是void,那么就不知道使用众多方法的返回结果中的哪一个了。 另外,使用多重委托时,方法中不能包含 out 参数。 8.1.3 多重委托 多重委托中的方法是按顺序被调用的,所以各个方法应该没有任何依赖关系,否则,需要保证调用次序。 程序代码8-5使用“+=”运算符把两个方法放入了一个委托中。 8.1.3 多重委托 从多重委托的实例可以看出,一个委托可以封装多个方法,说明委托中包含有一个方法的列表,当多个形式相同的方法被封装在一个委托中,可以用委托对象加括号的形式将被封装的方法全部执行。 除了以上运算符外,多重委托还允许用“==”和“!=”判断两个委托是否相等,也可以用委托的Equa
您可能关注的文档
- Access数据库应用基础教程(第二版) 978-7-302-18559-8 ch09新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch01新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch02新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch04新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch05新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch08新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch09新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch10新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch12新.ppt
- Access数据库应用基础教程(第三版) 978-7-302-28361-4 ch13新.ppt
- C# 程序设计 刘兵 第9章新.ppt
- C# 程序设计 刘兵 第11章新.ppt
- C#程序设计项目化教程郑广成 ch06新.ppt
- C语言程序设计马学文 第10章 文件新.ppt
- Delphi 2005程序设计教程 第7章 VCL窗体应用程序新.ppt
- Delphi 2005程序设计教程 第17章 开发自定义组件新.ppt
- ERP原理与应用教程 978-7-302-22476-1 -3 第13章财务管理和成本管理新.ppt
- Flash 8中文版实用教程 张雪峰 第8章_创建交互动画新.ppt
- Flash CS3中文版动画制作 龙天才 模块八 动画编程新.ppt
- Flash CS3中文版动画制作 龙天才 模块二 图形的绘制新.ppt
最近下载
- 校园欺凌预防与干预措施研究报告.docx VIP
- 2023年云南省劳动合同书电子版(5篇).doc VIP
- 医德医风考核表模板.pdf VIP
- 单证员招聘笔试题及解答(某大型国企).docx VIP
- 事业单位市场监督管理局面试真题及答案.docx VIP
- 中国血脂管理指南(基层版)2025ppt课件.pptx VIP
- “任务型”教学中应注意的几个问题.doc VIP
- 职业技术学院数字化校园项目策划用户需求书.doc VIP
- 【教学创新大赛】《分子生物学》教学创新成果报告.pdf VIP
- 质量管理工具及其应用指导之2:理解组织及其环境-质量管理体系及其过程:过程方法和策划类(雷泽佳编制2024A0).docx VIP
原创力文档


文档评论(0)