属性索引器委托事件课件_第1页
属性索引器委托事件课件_第2页
属性索引器委托事件课件_第3页
属性索引器委托事件课件_第4页
属性索引器委托事件课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

属性、索引器、委托、事件第6章回顾可以将同一命名空间内的类部署到不同的程序集中,并将不同命名空间内的类部署到一个程序集中。程序集有两种类型:私有程序集和共享程序集。try和catch块帮助处理引发的异常。是否执行Finally块中的语句与控制流无2目标解释属性实现索引器实现委托定义和引发事件3类中的字段示例usingSystem;classStudent{publicstringsName;publicstringsId;}classTest{publicstaticvoidMain(){StudentstudOne=newStudent();Console.WriteLine("输入学员姓名");studOne.sName=Console.ReadLine();Console.WriteLine("\n输入学员ID");studOne.sId=Console.ReadLine();Console.WriteLine("学员姓名是{0},学员ID是{1}",studOne.sName,studOne.sId);}}本示例公开了类中的数据成员,不是好的编程方式4C#中的属性4-1usingSystem;publicclassStudent{publicstringsName; //字段privatestringinternal_sId;//字段

publicstringsId //属性{get{returninternal_sId;}

set{internal_sId=value;}}}classTest{staticvoidMain(){Studentone=newStudent();one.sName="Sam";

one.sId="St423";Console.WriteLine("学员姓名是{0},他的ID是{1}",one.sName,one.sId);}}本示例我们引用了属性概念5C#中的属性4-3属性的类型-读/写属性-只读属性-只写属性7C#中的属性4-4属性是逻辑字段属性是字段的扩展与字段不同,属性不直接对应于存储位置与方法不同,属性不使用圆括号8定义索引器的规则必须指定至少一个索引器参数应当为索引器参数赋值10索引器与数组的比较4-1索引器不指向内存位置索引器可以有非整数的下标(索引)可以重载索引器11索引器与数组的比较4-212索引器与数组的比较4-3usingSystem.Collections;classStrIndex{publicHashtablestudentList=newHashtable();publicintthis[stringname]{get{return(int)studentList[name];}set{studentList[name]=value;}}}classTest{staticvoidMain(){StrIndexobjIndex=newStrIndex();objIndex["Sam"]=232676;objIndex["Tom"]=455464;System.Console.WriteLine("Sam的电话号码是{0},Tom的电话号码是{1}",objIndex["Sam"],objIndex["Tom"]);}}索引器可以有非整数下标而数组不能有

13索引器与数组的比较4-4usingSystem.Collections;classIndexerExample{publicstring[]stringList=newstring[10];publicstringthis[intindex]{get{returnstringList[index];}

set{stringList[index]=value.ToString();}}publicHashtablestudentList=newHashtable();publicintthis[stringnumber]{get{return(int)studentList[number];}set{studentList[number]=value;}}}classTest{staticvoidMain(){IndexerExampleindexTest=newIndexerExample();indexTest.stringList[1]="Sam";indexTest[2]="Tom";indexTest["Sam"]=232;indexTest["Tom"]=455;}}一个类可以有多个索引器但必须通过指定不同的索引类型重载索引器

14在索引器中使用多个参数可以指定多个索引器参数15定义委托

publicdelegatevoidDelegateName();17实例化委托classTestDelegates{publicdelegateintCallFun(inta,intb);classMathsOperations{publicintMulFun(inta,intb){returna*b;}publicintDivFun(inta,intb){returna/b;}}

classTest{staticvoidMain(){CallFunDelegateObj;MathsOperationsmath=newMathsOperations();

DelegateObj=newCallFun(math.MulFun);}}}实例化委托时,必须调用委托的构造函数,并将与委托相关联的方法及其对象名作为参数传给它。

18事件标识用户的某项操作,并将此操作通知给其它对象。把事件信息通知其他对象的对象称为发布方注册到事件的对象称为订户步骤定义事件(基于委托)给对象预订该事件(与事件处理方法进行关联)通知事件的订户(引发事件)20定义事件定义委托基于该委托定义事件21预订事件(与事件处理方法的关联)能否给对象预订事件取决于事件是否存在。如果事件存在,那么要给对象预订事件,只须添加一个当事件被引发时将调用方法的委托即可。预定事件也即事件与委托的关联,最终实现事件与相应的事件处理方法进行关联。22通知预

温馨提示

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

评论

0/150

提交评论