八章高级概念ii tp8_第1页
八章高级概念ii tp8_第2页
八章高级概念ii tp8_第3页
八章高级概念ii tp8_第4页
八章高级概念ii tp8_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

高级C#概念-II第八章回顾可以将同一命名空间内的类部署到不同的程序集中,并将不同命名空间内的类部署到一个程序集中。程序集有两种类型:私有程序集和共享程序集。try和catch块帮助处理引发的异常。是否执行Finally块中的语句与控制流无关。目标解释属性实现索引器实现委托定义和引发事件类中的字段示例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);}}本示例公开了类中的数据成员,不是好的编程方式C#中的属性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);}}本示例我们引用了属性概念C#中的属性4-2C#中的属性4-3属性的类型-读/写属性-只读属性-只写属性C#中的属性4-4属性是逻辑字段属性是字段的扩展与字段不同,属性不直接对应于存储位置与方法不同,属性不使用圆括号索引器索引器是C#

的简单组件为数组创建索引器后,可以通过从类对象指定索引来直接访问数组元素可以用索引数组的方式索引对象可以像访问数组一样访问类的成员示例定义索引器的规则必须指定至少一个索引器参数应当为索引器参数赋值索引器与数组的比较4-1索引器不指向内存位置索引器可以有非整数的下标(索引)可以重载索引器索引器与数组的比较4-2索引器与数组的比较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"]);}}索引器可以有非整数下标而数组不能有

索引器与数组的比较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;}}一个类可以有多个索引器但必须通过指定不同的索引类型重载索引器

在索引器中使用多个参数可以指定多个索引器参数委托包含对方法的引用帮助决定在运行时调用哪个方法步骤–定义委托实例化委托使用委托定义委托

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

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

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

使用委托classTestDelegates{publicdelegateintCallFun(inta,intb);}classMathsOperations{publicintMulFun(inta,intb){ returna*b;}

publicintDivFun(inta,intb){ returna/b;}}

classTest{staticvoidMain(){CallFunDelegateObj;MathsOperationsmath=newMathsOperations();DelegateObj=newCallFun(math.MulFun);

intt=DelegateObj(5,3);System.Console.WriteLine("结果是:{0}",t); }}}调用委托的方式与调用方法的方式相同,唯一的差别是没有调用委托的实现(该实现不存在),而是调用与该委托相关联的方法的实现代码。

事件使用C#中的事件,对象可以将关于事件或已发生变化的信息通知其他对象把事件信息通知其他对象的对象称为发布方注册到事件的对象称为订户步骤定义事件给对象预订该事件通知事件的订户定义事件发布方定义委托基于该委托定义事件预订

温馨提示

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

评论

0/150

提交评论