面向对象程序设计【C#】-委托课件_第1页
面向对象程序设计【C#】-委托课件_第2页
面向对象程序设计【C#】-委托课件_第3页
面向对象程序设计【C#】-委托课件_第4页
面向对象程序设计【C#】-委托课件_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计基于.NET委托2023/3/271委托定义委托也叫代理,就是把事情交付给别人去办,如委托律师代理打官司,委托同学代买火车票等。C#中如果将一个方法委托给一个对象,那么这个对象就可以全权代理这个方法的执行。使用委托首先要定义委托,声明委托能代理什么类型的方法,就像房产中介能代理抵押贷款业务而不能代理打官司一样定义委托的语法如下:

<访问修饰符>delegate返回类型委托名();2023/3/272常熟理工计算机科学与工程学院委托的用法定义了委托之后,要使用委托首先要实例化委托。实例化委托就是将其指向某个方法,即调用委托的构造函数,并将相关联的方法作为参数传递。然后通过调用委托,执行相关方法的代码,实现委托。2023/3/273常熟理工计算机科学与工程学院委托案例说明(委托的增加减少)dotNET_C#_OO_Delegate_MultiDelegate1、定义一个类NumberOperation,

其中有数操作的方法Square、SquareRoot2、Program中定义一个委托

delegatevoidMyDelegate(doubledValue);3、声明实例化委托:

MyDelegatedlg=newMyDelegate(myNO.Square);

4、增减委托:(+=/-=增减方法,若同方法添加两次,则执行两次)

dlg+=newMyDelegate(myNO.SquareRoot);//向委托添加方法 dlg-=newMyDelegate(myNO.SquareRoot);//从委托移除方法2023/3/275常熟理工计算机科学与工程学院委托案例说明(多方法委托)dotNET_C#_OO_Delegate_MultiMethodsprivatestaticList<int>FilterArray(int[]intArray,NumberPredicatepredicate)privatestaticboolIsEven(intnumber)privatestaticboolIsOdd(intnumber)privatestaticboolIsOver5(intnumber)2023/3/276常熟理工计算机科学与工程学院委托案例说明(委托的协变和逆变)dotNET_C#_OO_Delegate_Coconvariant声明返回类型为Person类实例的委托delegatePersonCreatePersonHandle(stringFirstName,stringLastName,intAge);声明参数为Employee类实例的委托delegatevoidShowEmployeeHandle(Employeeemp);委托的协变:委托的返回类型比方法返回类型的抽象级别高,进行隐式转换表现形式是方法返回的类型,是委托声明中返回类型的派生类。CreatePersonHandleeh=CreateEmployee;Employeeemployee=((Employee)eh("Pony","Smith",41));委托的逆变:委托的参数类型比方法参数类型的抽象级别低,进行隐式转换表现形式是方法的参数类型,是委托声明中参数的基类。ShowEmployeeHandleph=ShowPe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论