第6章--索引器、委托和事件_第1页
第6章--索引器、委托和事件_第2页
第6章--索引器、委托和事件_第3页
第6章--索引器、委托和事件_第4页
第6章--索引器、委托和事件_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 索引器、委托和事件我们知道数组中的元素可以通过索引进行检索,如果一个类中有很多对象,怎样简单快速地查找到需要的对象以及对象的特性呢?索引器就是为了实现这样的功能而设计的。索引器允许类或者结构的实例可以按照数组那样进行索引。可以简单地把索引器理解为常见的书中的目录,字典中提供检索的索引。委托和事件是C#中两个比较复杂的概念,事件在Windows编程中比较常见,但这些事件的产生基本上都由VS2008封装好,可以自动完成,通常不需要深入了解,本章将简单地介绍这两个概念和基本用法,使读者能够更深入理解C#中的事件处理机制。本章的主要内容有:定义和使用索引器如何理解委托和事件6.1 索引器的使用

2、 您查过字典吗?这个问题太幼稚了,相信大家都查过字典,无论新华字典还是成语词典都提供了检索方法,可以根据拼音检索,也可根据汉字部首检索,当然还有其他检索方式,帮助我们快速查找需要的信息。这节学习的索引器类似于字典中的检索,可以根据需要设定不同的检索方式,以快速查找类或结构的实例。6.1.1 索引器的定义索引器的定义类似于属性,但其功能与属性并不相同。索引器提供一种特殊的方法编写get和set访问器。属性可以使用户像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员。定义索引器的语法如下: 返回类型 this数据类型 标识 get语句集合 set语句集合示例代码如下:publi

3、c string thisint i getreturn namei; setnamei=value;6.1.2 索引器的使用【本节示例参考:源代码C6Example_IndexTest】 定义索引器的目的在于为类提供与数组相似的方法进行索引,就像字典中提供的部首检字法和拼音检字法,方便检索数据信息。下面通过一个简单的例子来学习索引器的使用。【问题:一个班内有50名学生,每一个学生具有学号、姓名、性别的属性,希望通过学生姓名或者学号查询该学生的其他信息,如何实现呢?】分析:(1)首先定义一个学生类,具有学号、姓名、性别的属性。(2)建立一个班级类,在班级中存储学生信息。(3)使用索引,分别通过

4、姓名和学号来获得学生信息。示例代码如代码6-1所示。6.2 委托 委托这个词在生活中经常遇到,委托律师打官司,委托房地产公司购买房子,委托保险代理人办理保险等。委托的意思就是把事情交付给别人去办。C#中的委托和生活中的很相似,如果将一个方法委托给一个对象,那么这个对象就可以全权代理这个方法的执行。委托在C#中是一个比较复杂的概念,下面我们将由浅入深学习详细内容。6.2.1 定义委托如果你需要委托律师打官司,首先必须有律师,这类律师可以接受哪一类型的案件,这是委托律师时要考虑的。C#中方法的形式很多,委托能够代表什么类型的方法和委托类型的定义有关。定义委托的语法如下: delegate 返回类型

5、 委托名();从上面可以看出定义委托和定义方法很相似,委托没有具体的实现体,由关键字delegate声明,直接以分号结束。委托能够代表什么样的方法由它的返回值类型和参数列表决定。如果定义如下委托:public delegate void MyDelegate(string name);那么使用MyDelegate委托代表的只可以是没有返回值,参数为一个字符串的方法。6.2.2 调用委托 【本节示例参考:源代码C6Example_DelegateTest】 定义了委托之后,如何使用委托代表方法执行呢?首先要实例化委托。实例化委托就是将其指向某个方法,即调用委托的构造函数,并将相关联的方法作为参数

6、传递。然后通过调用委托,执行相关方法。下面代码6-2演示委托的使用。6.3 事件事件是C#中另一个高级概念,使用方法和委托密切相关。奥运会参加百米跑的田径运动员听到枪声,比赛立即开始,其中枪声就是事件,而运动员开始比赛就是这个事件发生后引发的动作。不参加该项比赛的运动员或者其他人对枪声事件没有反应。在课堂上老师说开始考试,学生即开始答卷,其中老师说开始考试是事件,学生开始答卷是这个事件引发的动作。老师是事件的发布者,学生是事件的订阅者。C#中事件的处理和我们通常见到的事件具有相同的处理方式。从程序员的角度分析上面的例子,当裁判员枪声响起时,发生了一个事件,裁判员通知该事件的发生,参加比赛的运动员则仔细听枪声是否发生,运动员是该事件的订阅者,没有参加比赛的运动员则不会注意,即没有订阅该事件。C#中事件处理步骤如下:(1)定义事件。(2)订阅该事件。(3)事件发生时通知订阅者发生的事件。6.4 小结本章学习了C#中的一些高级概念,索引器、委托和事件,主要内容如下:使用索引器可以使我们像访问数组一样访问类成员。索引器可以使用索引访问,也可以自定义方式访问。委托类似于函数指针,但函数指针只能用于静态方

温馨提示

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

评论

0/150

提交评论