- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
集 合
第5章介绍了数组和Array类执行的接口。数组的大小是固定的。如果元素个数是动态的,就应使用集合类。
ListT和ArrayList是与数组相当的集合类。还有其他类型的集合:队列、栈、链表和字典。
本章介绍如何使用对象组。主要内容如下:
集合接口和类型
列表
队列
栈
链表
有序表
字典
带多个键的字典
位数组
性能
10.1 集合接口和类型
集合类可以组合为集合,存储Object类型的元素和泛型集合类。在.NET 2.0之前,不存在泛型。现在泛型集合类通常是集合的首选类型。泛型集合类是类型安全的,如果使用值类型,是不需要装箱操作的。如果要在集合中添加不同类型的对象,且这些对象不是相互派生的,例如在集合中添加int和string对象,就只需基于对象的集合类。另一组集合类是专用于特定类型的集合,例如StringCollection类专用于string类型。
提示:
泛型的内容可参见第9章。
对象类型的集合位于System.Collections命名空间;泛型集合类位于System.Collections. Generic命名空间;专用于特定类型的集合类位于System.Collections.Specialized命名空间。
当然,组合集合类还有其他方式。集合可以根据集合类执行的接口组合为列表、集合和字典。接口及其功能如表10-1所示。.NET 2.0为集合类添加了新的泛型接口,例如IEnumerableT和IListT。这些接口的非泛型版本将一个对象定义为方法的参数,而其泛型版本使用泛型类型T。
提示:
接口IEnumerable、ICollection和IList的内容详见第5章。
对集合非常重要的接口及其方法和属性如表10-1所示。
表10-1
接 口 方法和属性 说 明 IEnumerable,
IEnumerableT GetEnumerator() 如果将foreach语句用于集合,就需要接口IEnumerable。这个接口定义了方法GetEnumerator(),它返回一个实现了IEnumerator的枚举。泛型接口IEnumerableT继承了非泛型接口IEnumerable,定义了一个返回EnumerableT的GetEnumerator方法。因为这两个接口具有继承关系,所以对于每个需要IEnumerable类型参数的方法,都可以传送EnumerableT对象 ICollection Count,
IsSynchronized,
SyncRoot,
CopyTo() 接口ICollection由集合类实现。使用这个接口的方法可以在集合中添加和删除元素 ICollectionT Count,IsReadOnly,
Add(),Clear(),
Contains(),CopyTo()
Remove() 接口ICollectionT扩展了接口IEnumerable的功能 IList IsFixedSize,
IsReadOnly,
Item,Add,Clear,
Contains,IndexOf,
Insert,Remove,
RemoveAt 接口IList派生于接口ICollection。IList允许使用索引器访问集合,还可以在集合的任意位置插入或删除元素
IListT Item,IndexOf
Insert,Remove 与接口ICollectionT类似,接口IListT也继承了接口ICollection。
第5章提到,Array类实现了这个接口,但添加或删除元素的方法会抛出NotSupportedException异常。在大小固定的只读集合(如Array类)中,这个接口定义的一些方法会抛出NotSupportedExceptiuon异常 (续表)
接口 方法和属性 说明 IDictionary IsFixedSize,
IsReadOnly,Item,
Keys,Values,Add(),Clear(),Contains(),
GetEnumerator(),
Remove() 接口IDictionary或IDictionaryTKey,TValue由其元素包含键和值的集合实现 IDictionaryTKey,TValue Item,Keys,Values,Add(),
ContainsKey (),
Remove(),
TyrGetValue() IComparerT Compare() 接口IComparerT由比较器实现,通过Compare()方法给集合中的元素排序 IEqualityComparerT Equals(),
GetHashCode() 接口IEqualityComparerT由一个比较器实现,该比较器可用于字典中的键。使用这
文档评论(0)