c#集合和泛型

上传人:wm****3 文档编号:43035579 上传时间:2018-06-04 格式:DOC 页数:5 大小:15.08KB
返回 下载 相关 举报
c#集合和泛型_第1页
第1页 / 共5页
c#集合和泛型_第2页
第2页 / 共5页
c#集合和泛型_第3页
第3页 / 共5页
c#集合和泛型_第4页
第4页 / 共5页
c#集合和泛型_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《c#集合和泛型》由会员分享,可在线阅读,更多相关《c#集合和泛型(5页珍藏版)》请在金锄头文库上搜索。

1、C#C#集合和泛型集合和泛型本文由紫藤树下等 Jeff 贡献ppt 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。集合和泛型.NET 课程组 课程组1 集合C#中,集合表示可以通过 中 集合表示可以通过 foreach 循 循 环遍历每个元素来访问的一组对象; 环遍历每个元素来访问的一组对象;使 循环是集合的主要目的。 用 foreach 循环是集合的主要目的。 循环是集合的主要目的1 集合泛泛地讲,如果对象可以提供对相关对象 泛泛地讲, 的引用,那么它就是一个集合, 的引用,那么它就是一个集合,它可以遍 历集合中的每个数据项; 历集合中的每个数据项;专业

2、的说法是所 有实现了 System.Collections.IEnumerable 接口的类的对象都是集合。 接口的类的对象都是集合。1 集合interface IEnumerable ? ? IEnumerator GetEnumerator(); ? ? 该方法的作用是返回枚举对象,返回的枚举对象 该方法的作用是返回枚举对象, 要支持接口 IEnumerator 要支持接口 ? 用户也可以自行定义集合类,只要该类满足接口 用户也可以自行定义集合类, IEnumerable,就是一个集合类。 ,就是一个集合类。1 集合? ? ? ? ? ? ? Framework 对 IEnumerator

3、 接口的定义为: 对 接口的定义为: 接口的定义为 interface IEnumerator Object Currentget; Bool MoveNext(); void Reset(); 实现该接口的对象应该与一个集合相关联,这个对象在初始化的时候, 实现该接口的对象应该与一个集合相关联,这个对象在初始化的时候, 还没有指向集合中的任何元素,必须调用 MoveNext()移动枚举, 移动枚举, 还没有指向集合中的任何元素,必须调用 移动枚举 才能使它指向集合中的第一个元素,接着使用 Current 属性可以获 才能使它指向集合中的第一个元素,接着使用 属性可以获 取该元素; 属性返回对

4、一个对象的引用; 取该元素;Current 属性返回对一个对象的引用;当需要访问下一 属性返回对一个对象的引用 个元素时,再次调用 MoveNext(),直到 个元素时,再次调用 ,直到 Current为 null,表示达 为 , 到了集合的尾部;如果要返回集合的开头,使用 Reset()方法和 到了集合的尾部;如果要返回集合的开头,使用 方法和 MoveNext()方法,指向第一个元素。 方法, 方法 指向第一个元素。1 集合数组列表 数组列表 ArrayList 也是一种集合 也是一种集合 类型, 类型,在 System.Collections 名称空间下;可以将它看作是数组 名称空间下;

5、 的复杂版本 ? 与数组的区别: 与数组的区别: 数组 数组 Array 是固定长度的,而 ArrayList 类是可以根 是固定长度的, 是固定长度的 类是可以根 据需要自动扩展的 数组中元素的数据类型都是一致的,而 ArrayList 中 数组中元素的数据类型都是一致的, 中 的数据类型可以不同1 集合修改或者获取 修改或者获取 ArrayList 的容量 的容量 使用 使用 Capacity 属性,通过设置该属性的值可以修改 属性, 属性 ArrayList 的容量;读取该属性的值可以获取 的容量;的容量 ArrayList 的容量 的容量 当为 当为 ArrayList 对象添加的数据

6、元素的个数超出初始 对象添加的数据元素的个数超出初始 化时指定的数据项个数时,ArrayList 对象的容量还 化时指定的数据项个数时, 对象的容量还 可以自动增长,默认增长后的容量为原来的 2 倍 可以自动增长,默认增长后的容量为原来的 倍,即数 据项的个数为初始化时的 2 倍 据项的个数为初始化时的 倍。1 集合 ?添加 添加 ArrayList 的数据项 添加 的数据项 Add();向列表尾部添加,输入参数为 向列表尾部添加, 向列表尾部添加 输入参数为 object 类型数据 AddRange();向列表尾部添加,输入参数为 向列表尾部添加, 向列表尾部添加 对象组 Insert();

7、向指定位置添加,输入数据为位置 向指定位置添加, 向指定位置添加 索引和要添加的对象( 索引和要添加的对象(object) )1 集合 ?删除 删除 ArrayList 的数据项 删除 的数据项 Remove(); 输入参数为 输入参数为 object 类型数据, 类型数据, 类型数据 将第一个与指定对象相等的数据项从列表中删 除 RemoveAt(); 输入参数为要删除的数据项 索引值, 索引值,将指定位置的数据删除2 泛型泛型是 泛型是.NET 2.0 的 CLR 中引入一个新概念。 中引入一个新概念。 的 中引入一个新概念 在以前的.NET 版本中,当编译时不确定使 版本中, 在以前的

8、版本中 用什么类时,就需要以object 为基础,尽 为基础, 用什么类时,就需要以 为基础 心转换;这样做确保了代码的灵活性, 心转换;这样做确保了代码的灵活性,但 由于 Object 类在编译期间没有类型安全性, 类在编译期间没有类型安全性, 由于 类在编译期间没有类型安全性 因此必须进行强制类型转换, 因此必须进行强制类型转换,使代码变得 复杂;而且给值类型使用 Object 类还会造 复杂;而且给值类型使用 类还会造 成性能损失的。 成性能损失的。在.NET 2.0 中,泛型类型 中 可以根据需要用特定的类型替换泛型类型, 可以根据需要用特定的类型替换泛型类型, 确保了类型安全性。 确

9、保了类型安全性。2 泛型最常用的泛型 最常用的泛型 List 如果对象组的数据类型一致,并且对象个数不 如果对象组的数据类型一致, 确定,或者个数随程序的执行会发生变化; 确定,或者个数随程序的执行会发生变化;同 时对对象组中数据项的访问不需要通过关键字 来实现,只需要通过下标索引访问数据项;又 来实现,只需要通过下标索引访问数据项; 或者希望对对象组中的数据项成员进行排序和 搜索等操作,可以使用泛型 List 搜索等操作,可以使用泛型2 泛型创建 类型对象的泛型集合语法为: 创建 T 类型对象的泛型集合语法为 类型对象的泛型集合语法为: List 泛型对象名 泛型对象名=new List()

10、;添加泛型 添加泛型 List的数据项 添加泛型 的数据项 Add();向列表尾部添加,输入参数为 类型数 向列表尾部添加, 向列表尾部添加 输入参数为 T 类型数 据 AddRange();向列表尾部添加,输入参数为 向列表尾部添加, 向列表尾部添加 T类型对象组 类型对象组 Insert();向指定位置添加,输入数据为位置 向指定位置添加, 向指定位置添加 索引和要添加的对象( 类型 类型) 索引和要添加的对象(T 类型)2 泛型删除泛型 删除泛型 List的数据项 的数据项 Remove(); 输入参数为 类型数据,将第一个与指定对象相等 输入参数为 T 类型数据 类型数据, 的数据项从

11、列表中删除 RemoveAt(); 输入参数为要删除的数据项索引值,将指定位置 输入参数为要删除的数据项索引值, 的数据删除 Clear()方法可以清除 方法可以清除 List中所有项 方法可以清除 中所有项泛型 泛型 List与 ArrayList 有 2 个共 与 有 个共 同的属性 Capacity 和 Count 同的属性 和Capacity 同前 同前 Count 表示列表中现有数据项的个数 表示列表中现有数据项的个数2 泛型此外,泛型 此外,泛型 List提供了多个 提供了多个 有用的方法: 有用的方法: IndexOf()方法可以获取指定项在 方法可以获取指定项在List中的索

12、方法可以获取指定项在 中的索 引值,输入参数为 类型数据, 输入参数为 T 类型数据 引值 输入参数为 类型数据,将返回第一个与指定对 象相等的数据项的索引 Sort()方法,可以将 方法, 方法 可以将 List中的数据项按照某种规 中的数据项按照某种规 则排序其前提是 类型提供了 CompareTo()方法,可以实现对当 其前提是 T 类型提供了 方法, 类型提供了 方法 前类的实例和另一个T 类型对象的比较 返回 int 值。 类型对象的比较, 前类的实例和另一个 类型对象的比较,返回 值 CopyTo()方法可以将 方法可以将 List中指定位置的项复制 方法可以将 中指定位置的项复制 到数组中1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号