C#程序设计经典教程ppt课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C#程序设计经典教程ppt课件.ppt》由会员分享,可在线阅读,更多相关《C#程序设计经典教程ppt课件.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第六章第六章 集合、索引器与泛型 1. 总体要求总体要求l了解了解.NET类库中的集合类,初步掌握常用集合的创建和操作类库中的集合类,初步掌握常用集合的创建和操作方法。方法。l理解索引器的概念,能区别索引器与属性,掌握索引器的定理解索引器的概念,能区别索引器与属性,掌握索引器的定义与使用。义与使用。l了解泛型的相关概念,初步掌握泛型接口、泛型类、泛型属了解泛型的相关概念,初步掌握泛型接口、泛型类、泛型属性和泛型方法的使用。性和泛型方法的使用。2. 相关知识点相关知识点l熟悉类和数组的定义和使用。熟悉类和数组的定义和使用。l熟悉类的方法成员的定义与使用等基本操作。熟悉类的方法成员的定义与使用等
2、基本操作。3. 学习重点学习重点集合、索引器、泛型的定义与使用。集合、索引器、泛型的定义与使用。4. 学习难点学习难点l索引器的作用、定义与使用方法索引器的作用、定义与使用方法l泛型的概念和意义,泛型的定义和使用方法泛型的概念和意义,泛型的定义和使用方法第六章第六章 集合、索引器与泛型第六章第六章 集合、索引器与泛型集合集合索引器索引器泛型泛型6.1 集合集合 l6.1.1 集合概述集合概述 l6.1.2 ArrayList l6.1.3 哈希表哈希表Hashtablel6.1.4 栈和队列栈和队列6.1.1 集合概述集合概述l集合能随意调整大小集合能随意调整大小,集合可以把一组类似的对象组合
3、在一集合可以把一组类似的对象组合在一起。任何类型的对象都可被组合到一个起。任何类型的对象都可被组合到一个Object类型的集合类型的集合中,并通过中,并通过C#的的foreach语句来访问其中的每一个对象。语句来访问其中的每一个对象。操作过程中操作过程中MyClass 的对象与的对象与Object对象之间对象之间 MyClass mcObj; 装箱:装箱: Object obj = mcObj (无需显式转换无需显式转换) 拆箱:拆箱: mcObj = ( MyClass )obj (事先装箱的)(事先装箱的)l对象类型的集合位于对象类型的集合位于System.Collections命名空间;
4、命名空间; “雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。6.1 数组类数组类 Array public abstract class Array: ICloneable,IList /类体:实现了多个接口类体:实现了多个接口 /(数组操作的常用属性和方法,多为静态)(数组操作的常用属性和方法,多为静态)int Coun
5、t get; void CopyTo(Array array,int index);interface ICloneable object Clone();Collection, IEnumerableint Add(objdect value); void Remove(object key);void Insert(int index,object value);interface IEnumerator ObjectObject Current get; Current get; boolbool MoveNext () MoveNext ();voidvoid Reset () Res
6、et () IEnumerator public static void Main()int a = new int 3; Array b =Array.CreateInstance(typeof(int), 3); for (int i=0; i3; i+) a I = 2*i; b.SetValue( 3*i , i ); foreach (int x in a) console.Write( “0 ” ,x);foreach (int x in b) console.Write( “0 ” ,x);接口中的方法:接口中的方法:默认是默认是public abstract 的。的。继承接口的
7、类:继承接口的类:必须实必须实现接口中的所有属性和现接口中的所有属性和方法,否则该类是抽象方法,否则该类是抽象的。的。“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。6.1.4 栈和队列栈和队列l1栈栈Stack Stack类实现了先进后出的数据结构,类实现了先进后出的数据结构, 这种数据结构在插入或删除对象时,这种数据结
8、构在插入或删除对象时, 只能在栈顶插入或删除。只能在栈顶插入或删除。 创建栈对象的一般形式如下:创建栈对象的一般形式如下: Stack 栈名栈名 = new Stack();lStack类提供了栈常用操作方法,包括在栈顶添加数据、类提供了栈常用操作方法,包括在栈顶添加数据、移除栈顶数据、返回栈顶数据、清空栈和检查是否包含某移除栈顶数据、返回栈顶数据、清空栈和检查是否包含某个数据等,方法名分别为个数据等,方法名分别为Push、Pop、Peek、Clear和和Contains。其中,。其中,Push和和Pop每操作一次只能添加或删每操作一次只能添加或删除一个数据。除一个数据。 栈底栈底栈顶栈顶出栈
9、出栈进栈进栈“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。6.1.4 栈和队列栈和队列l2队列队列QueuelQueue类实现了先进先出的数据结构,这种数据结构把对类实现了先进先出的数据结构,这种数据结构把对象放进一个等待队列中,当插入或删除对象时,对象从队象放进一个等待队列中,当插入或删除对象时,对象从队列的一端插入,
10、从另外一端移除。列的一端插入,从另外一端移除。l队列可以用于顺序处理对象,因此队列可以按照对象插入队列可以用于顺序处理对象,因此队列可以按照对象插入的顺序来存储。的顺序来存储。 创建队列对象的一般形式如下:创建队列对象的一般形式如下: Queue 队列名队列名 = new Queue(队列长度队列长度,增长因子,增长因子);l其中,队列长度默认为其中,队列长度默认为32。增长因子默认为。增长因子默认为2.0,即每当队,即每当队列容量不足时,队列长度调整为原来的列容量不足时,队列长度调整为原来的2倍,可重新设置增倍,可重新设置增长因子的大小。长因子的大小。队头队头队尾队尾出队出队 入队入队“雪亮
11、工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。10集合类的选择集合类的选择选择集合类时,一般要考虑以下问题:选择集合类时,一般要考虑以下问题:(1)是否需要一个序列列表,需要先进先出行为时可使用)是否需要一个序列列表,需要先进先出行为时可使用 Queue 队队列类,在需要后进先出行为时可使用列类,在需要后进先出行为时可使用 S
12、tack栈类。栈类。(2)是否需要随机访问集合中的元素,此时不能选择)是否需要随机访问集合中的元素,此时不能选择Queue 队列类队列类、Stack栈类、栈类、LinkedList 双向链表类双向链表类(3)是否需要通过索引访问每个元素,只有)是否需要通过索引访问每个元素,只有ArrayList、StringCollection等是从索引为零的元素开始逐个访问集合元素。等是从索引为零的元素开始逐个访问集合元素。Hashtable、Dictionary通过元素的键(即元素名字)提供对元素通过元素的键(即元素名字)提供对元素的访问。而的访问。而NameValueCollection 类和类和Sor
13、tedList 泛型类通过其泛型类通过其元素的从零开始的索引,或者通过其元素的键提供对元素的访问元素的从零开始的索引,或者通过其元素的键提供对元素的访问。(4)是否包含一个值、一个键和一个值的集合,还是一个键和多个值)是否包含一个值、一个键和一个值的集合,还是一个键和多个值的集合。其中,的集合。其中,“一个值一个值”的集合是一种基于的集合是一种基于 IList 列表接口派生列表接口派生的集合,的集合,“一个键和一个值一个键和一个值”的集合是一种基于的集合是一种基于IDictionary字典字典接口的集合,接口的集合,“一个键和多个值一个键和多个值”的集合是的集合是 NameValueColle
14、ction 类。类。“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。11集合类的选择集合类的选择(续续)(5)是否需要用与输入元素方式不同的方式对元素排序。)是否需要用与输入元素方式不同的方式对元素排序。Hashtable 按其元素的哈希代码对元素排序,按其元素的哈希代码对元素排序,SortedList以及以及 Sorte
15、dDictionary根据根据 IComparer 实现按键对元素实现按键对元素的排序,而的排序,而ArrayList提供提供 Sort 排序方法。排序方法。(6)是否需要信息的快速搜索和检索,对于小集合()是否需要信息的快速搜索和检索,对于小集合(10个元个元素或更少),素或更少),ListDictionary 比比 Hashtable 快,快,SortedDictionary 泛型类提供比泛型类提供比 Dictionary 泛型类更快泛型类更快的查找。的查找。(7)是否需要只接受字符串的集合,如)是否需要只接受字符串的集合,如StringCollection和和 StringDiction
16、ary等。等。“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。12三、集合的创建与操作三、集合的创建与操作l1. 动态数组类动态数组类ArrayListl2. 队列队列Queuel3. 栈栈Stackl4. 哈希表哈希表Hashtablel5. 字符串字典字符串字典StringDictionary“雪亮工程雪亮工程是以区(
17、县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。1. 动态数组类动态数组类ArrayListlArrayList:可以看作是能够自动增长容量:可以看作是能够自动增长容量的动态数组,它实现了的动态数组,它实现了IList接口。接口。(1)Capacity 集合容量,读写属性集合容量,读写属性(2)Count 获取列表中实际包含元素的个数获取列表中实际
18、包含元素的个数(3)Add()方法:列表末尾添加元素方法:列表末尾添加元素(4)Insert()方法:列表指定位置添加元素方法:列表指定位置添加元素(5)Remove()方法:移除特定对象方法:移除特定对象(6)RemoveAt()方法:根据索引值移除对象方法:根据索引值移除对象“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程
19、”。141. 动态数组类动态数组类ArrayListl(1) ArrayList与与Array的区别的区别Array 的大小是固定的,而的大小是固定的,而 ArrayList的大小可根据需要自动的大小可根据需要自动扩充;扩充;在在Array中一次只能获取或设置一个元素的值,而在中一次只能获取或设置一个元素的值,而在ArrayList中允许添加、插入或移除某一范围的元素;中允许添加、插入或移除某一范围的元素;Array 的下限可以自定义,而的下限可以自定义,而ArrayList的下限始终为零;的下限始终为零;Array 可以具有多个维度,而可以具有多个维度,而 ArrayList始终只是一维的;
20、始终只是一维的;Array 位于位于 System 命名空间中,命名空间中,ArrayList 位于位于 System.Collections 命名空间中。命名空间中。l(2) 创建动态数组创建动态数组:ArrayList 列表对象名列表对象名 = new ArrayList( );例如例如, ArrayList list = new ArrayList();list.Add(罗福强罗福强);list.Add(30);“雪亮工程雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(
21、社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。152. 队列队列Queuel队列的特点队列的特点一种先进先出的数据结构,当插入或删除对象时,对象从队列的一种先进先出的数据结构,当插入或删除对象时,对象从队列的一端插入,从另外一端移除一端插入,从另外一端移除 l创建队列对象创建队列对象 Queue 队列名队列名 = new Queue(队列长度队列长度,增长因子,增长因子);说明,队列长度默认为说明,队列长度默认为32,增长因子默认为,增长因子默认为2.0(即每当队列容量不足(即每当队列容量不足时
22、,队列长度调整为原来的时,队列长度调整为原来的2倍)倍)注意,由于调整队列的大小需要付出一定的性能代价,因此建议在构注意,由于调整队列的大小需要付出一定的性能代价,因此建议在构造队列时指定队列的长度。造队列时指定队列的长度。l队列包括队列包括Enqueue、Dequeue、Peek、Clear和和Contains等方法。等方法。其中,其中,Enqueue和和Dequeue每操作一次只能添加或删除一每操作一次只能添加或删除一个数据。个数据。l例如:例如:Queue q = new Queue(50,3.0);q.Enqueue(董涛董涛);q.Enqueue(徐磊徐磊);“雪亮工程雪亮工程是以区
23、(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程群众性治安防控工程”。163. 栈栈Stackl栈的特点:栈的特点:一种先进后出的数据结构,这种数据结构在插入或删除一种先进后出的数据结构,这种数据结构在插入或删除对象时,只能在栈顶插入或删除。对象时,只能在栈顶插入或删除。 l创建栈对象:创建栈对象:Stack 栈名栈名 = new Stack( );l栈包括栈包括Pu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 程序设计 经典 教程 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内