- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ICollection、迭代及泛型
1、ICollection接口??? 数组是.net framework定义的最基本的集合类型,除了数组,.net framework还定义了很多集合类型。打开msdn可以看到,所有集合都在System.Collections命名空间下:集合类:ArrayList:使用大小可按需动态增加的数组实现IList接口。BitArray:管理值的压缩数组,该值表示为布尔值,true表示位是打开的(1),false表示位是关闭的(0)。CaseInsensitiveComparer:比较两个对象是否相等,比较时忽略字符串的大小写。CollectionBase:为强类型集合提供 abstract 基类。Comparer:比较两个对象是否相等,其中字符串比较是区分大小写的。DictionaryBase:为键/值对的强类型集合提供 abstract 基类Hashtable:表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。Queue:表示对象的先进先出集合ReadOnlyCollectionBase:为强类型非泛型只读集合提供 abstract 基类。SortedList:表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。Stack:表示对象的简单的后进先出非泛型集合。接口:ICollection :定义所有非泛型集合的大小、枚举数和同步方法。IComparer:公开一种比较两个对象的方法。IDictionary:表示键/值对的非通用集合。IDictionaryEnumerator:枚举非泛型字典的元素。IEnumerable:公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。IEnumerator:支持对非泛型集合的简单迭代。IEqualityComparer:定义方法以支持对象的相等比较。IList:表示可按照索引单独访问的对象的非泛型集合。主要看一下ICollection接口和IEnumerable接口。ICollection:该接口为其实现类定义了两个主要规范:(1)集合元素个数,即Count属性;(2)迭代(GetEnumerator方法)。GetEnumertor方法时由ICollection的父接口IEumerable继承而来的。ICollection接口定义了一个存储和获取object类型对象引用的集合,这样可以存储和获取各种引用类型对象的引用或值类型对象。IEnumerable接口:该接口是ICollection的父接口,这个接口为其实现的类提供了可迭代的能力。IEumerable接口只有一个GetEnumerator方法,返回一个循环访问集合的枚举数2、迭代??? 迭代,也叫迭代器,也就是设计模式中的迭代模式,意义是:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。因为集合的存储方式各不相同,List是连续存储,链表使用对象间的引用存储... ...那么当需要遍历集合时就不方便,就需要一种能遍历所有不同的集合的方法,这就有了迭代器。迭代器将结合类看做一个无限容量的容器,存放规则是线性的。也就是除第一个和最后一个外每一个元素具有一个直接前驱和直接后继,容器中具备一个标志,可以指向容器中任意一个存储单位。有两种方式:单向迭代和双向迭代。(1)、单向迭代?单向迭代指只向前迭代,集合的单元标志只能从集合的某个元素起始逐一向后移动,所以,迭代定义了三种操作:?a、当前项?b、到下一项并判断是否末尾?c、回到初始项??(2)、双向迭代模式?对于双向迭代模式,集合的单元标志即从集合的某项起逐一向后移动,也可以从集合的某项起逐一向前移动,因此,有四种操作:a、当前项b、前进至下一项并判断是否末尾c、回到前一项并判断是否是集合开头d、返回初始位置
.net framework使用IEumerable接口定义了一个单向迭代规范。ICollection接口继承了IEumerable接口,该接口定义的GetEnumerator方法可以获取到一个当前集合类对象的迭代对象,即一个实现了IEumerable接口的对象。凡是实现了IEnumerable接口的类,都可以使用foreach循环迭代遍历。IEnumerator接口定义了一个可以遍历object类型对象引用的迭代子,IEnumerable接口定义了获取这种迭代子对象的方法。3、泛型集合?ICollectionT接口ICollectionT接口定义了泛型集合接口,所谓泛型集合,即使用了.net Framework提供的泛型特性,使集合限定为只存储一种特定类型对象引用或值类型的数据的集合。泛型集合增强了集合访问的效率和安全性。由于存储类型已被确定,所以IC
文档评论(0)