背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-58540.html    注册17xie 一起来写书 实现您的出书梦想!

第5章介绍了数组和Array类执行的接口。数组的大小是固定的。如果元素个数是动态的,就应使用集合类。

List<T>和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为集合类添加了新的泛型接口,例如IEnumerable<T>和IList<T>。这些接口的非泛型版本将一个对象定义为方法的参数,而其泛型版本使用泛型类型T。

提示:

接口IEnumerable、ICollection和IList的内容详见第5章。

对集合非常重要的接口及其方法和属性如表10-1所示。

表10-1

接    口

方法和属性

说    明

IEnumerable,

IEnumerable<T>

GetEnumerator()

如果将foreach语句用于集合,就需要接口IEnumerable。这个接口定义了方法GetEnumerator(),它返回一个实现了IEnumerator的枚举。泛型接口IEnumerable<T>继承了非泛型接口IEnumerable,定义了一个返回Enumerable<T>的GetEnumerator方法。因为这两个接口具有继承关系,所以对于每个需要IEnumerable类型参数的方法,都可以传送Enumerable<T>对象

ICollection

Count,

IsSynchronized,

SyncRoot,

CopyTo()

接口ICollection由集合类实现。使用这个接口的方法可以在集合中添加和删除元素

ICollection<T>

Count,IsReadOnly,

Add(),Clear(),

Contains(),CopyTo()

Remove()

接口ICollection<T>扩展了接口IEnumerable的功能

IList

IsFixedSize,

IsReadOnly,

Item,Add,Clear,

Contains,IndexOf,

Insert,Remove,

RemoveAt

接口IList派生于接口ICollection。IList允许使用索引器访问集合,还可以在集合的任意位置插入或删除元素

IList<T>

Item,IndexOf

Insert,Remove

与接口ICollection<T>类似,接口IList<T>也继承了接口ICollection。

第5章提到,Array类实现了这个接口,但添加或删除元素的方法会抛出NotSupportedException异常。在大小固定的只读集合(如Array类)中,这个接口定义的一些方法会抛出NotSupportedExceptiuon异常

(续表)  

接口

方法和属性

说明

IDictionary

IsFixedSize,

IsReadOnly,Item,

Keys,Values,Add(),Clear(),Contains(),

GetEnumerator(),

Remove()

接口IDictionary或IDictionary<TKey,TValue>由其元素包含键和值的集合实现

IDictionary<TKey,TValue>

Item,Keys,Values,Add(),

ContainsKey (),

Remove(),

TyrGetValue()

IComparer<T>

Compare()

接口IComparer<T>由比较器实现,通过Compare()方法给集合中的元素排序

IEqualityComparer<T>

Equals(),

GetHashCode()

接口IEqualityComparer<T>由一个比较器实现,该比较器可用于字典中的键。使用这个接口,可以对对象进行相等比较。方法GetHashCode()应为每个对象返回一个唯一值。如果对象相等,Equals()方法就返回true,否则返回false


字数:2427    最后更新:7个月以前 [04-10 21:35]happyskynet 修改
本页编辑者:happyskynet  
[前一页]:9.8 小结  [后一页]:10.2 列表
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号