- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C_面向对象程序设计资源-王晶晶 主编 第6章
应用程序在运行过程中通常会引发各种情况,有的情况类似于单击应用程序窗口中的按钮,这类情况称为事件;有的情况则类似于被零除等意外情形,这类情况称为异常,无论发生何种情况,程序都要对此进行处理,C#中对事件的处理是通过委托机制实现的,本章将详细介绍委托、事件和异常处理。 6.1 委托 假设你是一个程序员,正在编写一个Asp.net网页,而JS部分你不熟悉,这时你可以“委托”你的同事来完成这部分操作。这就是委托,把你不能做的事情委托给别人来完成。C#中委托类似于C++中的函数指针,在程序运行时调用不同的函数,为操作函数提供了很大的灵活性和安全性。使用委托分为以下三步: 1. 委托声明 2. 委托实例化 3. 委托调用 6.1.1 委托声明委托是一种引用类型,使用delegate关键字进行声明。语法[访问修饰符]delegate 返回类型 委托名(参数列表);说明: 1.委托的声明与函数的声明类似,注意没有函数体; 2.委托使用一组特定的参数和返回来封装方法,封装与它匹配(即具有相同的参数和返回类型)的所有方法; 例6-1 声明一个委托delegate int NumDelegate(int a,int b);这就声明了一个委托,它的含义是:如果用这个委托作事情的话,做事情的方法必须满足以下条件:方法的参数的个数、类型和顺序必须与委托相同;方法的返回值必须与委托相同; 6.1.2 委托实例化 在声明委托后,就可以实例化委托,即创建委托对象,并把与该委托对象关联的方法的名字作为它的参数。因此,创建委托对象前,需要先定义好欲调用的方法。由于该方法是通过delegate委托调用的,故该方法的参数类型、个数和返回值都必须和定义委托的类型一致。然后,就可以创建委托对象。 例6-2 实例化委托NumDelegate//定义委托需要调用的方法Addprivate static int Add(int num1, int num2){ return (num1 + num2);}//创建委托实例p1NumDelegate p1 = new NumDelegate(Add);先定义与委托NumDelegate匹配的方法Add,然后用方法名Add作为参数对委托NumDelegate进行实例化,这样委托实例p1就与方法Add相关联。 6.1.3 委托调用 调用委托意味着调用与委托相关联的方法。调用委托与调用方法相似,唯一的区别在于不是调用委托的实现代码(委托没有实现代码),而是调用与委托相关联的方法的实现代码。例6-3 调用委托 p1(1, 2); //委托调用 实例化委托NumDelegate时,使用方法Add作为参数,所以调用委托实例p1时,实际上调用的是与委托相关联的方法Add。 例6-4 委托的应用using System;using System.Collections.Generic;using System.Text;namespace delegateExample{ delegate int NumDelegate(int a, int b); //委托声明 class Class1 { private static int Add(int num1, int num2) { return (num1 + num2); } private static int Subtract(int num1, int num2) { return (num1 -num2); } private static int Multiply(int num1, int num2) { return (num1 * num2); } private static int Divide(int num1, int num2) { return (num1 / num2); } static void Main(string[] args) { //Class1 c1 = new Class1(); NumDelegate p1 = new Num
您可能关注的文档
最近下载
- 最地震演练脚本.docx VIP
- 《国有企业管理人员处分条例》解读.docx VIP
- 《无机及分析化学》课件 第7章 物质结构基础.ppt VIP
- Kyocera京瓷ECOSYS M4125idn_M4132idn操作手册.pdf
- 含糖透析液对血透病人的影响.doc VIP
- RADWIN5000安装调试指南.doc VIP
- 无机及分析化学:第四章 物质结构简介.ppt VIP
- 体育康养与自然疗法的结合研究论文.docx VIP
- 2025年广东省基层住院医师线上岗位培训《医学人文及医患沟通》-中医学专业培训课程公共课答案.docx VIP
- 含糖透析液对糖尿病肾病血液透析患者血压和心率变异性影响.doc VIP
文档评论(0)