HWH....

导航

 

如果将紧密相关的数据组合到一个集合中,则能够更有效地处理这些紧密相关的数据。代替编写不同的代码来处理每一单独的对象,您可以使用相同的调用代码来处理一个集合的所有元素。

若要管理集合,可使用 Array 类和 System.Collections 类添加、移除和修改该集合中的个别元素或某一范围内的元素。甚至可以将整个集合复制到另一个集合中。

某些 Collections 类具有排序功能并且大多数都有索引。自动处理内存管理,集合的容量会根据需要扩展。当访问集合成员时同步提供线程安全。某些 Collections 类可以生成包装,这些包装令集合是只读的或固定大小的。任何 Collections 类都可以生成自己的枚举数,该枚举数简化了对元素的循环访问。

定义集合

集合是一组组合在一起的类似的类型化对象。

任何类型的对象都可被组合到 Object 类型的单个集合中,以利用采用该语言继承的构造。例如,C# foreach 语句(Visual Basic 中的 for each)需要集合中的所有对象都属于单一类型。

但是,在 Object 类型的集合中,单独对各元素执行附加的处理,例如装箱和取消装箱或转换,这影响该集合的性能。装箱和取消装箱通常在存储或检索 Object 类型集合中的值类型时发生。

泛型集合(如 List)和强类型非泛型集合(如 StringCollection)可避免造成上述性能损害,前提是元素的类型是集合所需的类型(例如,从 StringCollection 存储或检索字符串)。此外,强类型集合自动执行添加到该集合的每一元素的类型验证。

除添加、移除或搜索元素的方法外,直接或间接实现 ICollection 接口或 ICollection 泛型接口的所有集合还共享若干功能:

  • 枚举数。

    枚举数是循环访问其关联集合的对象。它可被视作指向集合中任何元素的可移动的指针。一个枚举数只能与一个集合关联,但一个集合可以具有多个枚举数。C# foreach 语句(Visual Basic 中的 for each)使用枚举数并隐藏操作该枚举数的复杂性。

  • 同步成员。

    同步在访问集合的元素时提供线程安全。默认情况下集合不是线程安全的。在 System.Collections 命名空间中只有几个类提供 Synchronize 方法,该方法能够超越集合创建线程安全包装。但是,System.Collections 命名空间中的所有类都提供 SyncRoot 属性,可供派生类创建自己的线程安全包装。还提供了 IsSynchronized 属性以确定集合是否是线程安全的。ICollection 泛型接口中不提供同步功能。

  • The CopyTo 方法。

    使用 CopyTo 方法可将所有集合复制到数组中;但是,新数组中元素的顺序基于枚举数返回它们的顺序。结果数组始终是具有零下限的一维数组。

注意,ICollection 泛型接口包含非泛型接口未包含的成员。

以下功能在 System.Collections 命名空间中的一些类中实现:

  • 容量和计数。

    集合的容量是其可以包含的元素的数目。集合的计数是其实际包含的元素的数目。BitArray 是一个特例;其容量与其长度相同,而其长度与其计数相同。某些集合隐藏容量或计数(或两者一起隐藏)。

    System.Collections 命名空间中的所有集合在达到当前容量时可自动扩充容量。内存被重新分配,元素从旧集合复制到新集合中。这减少了使用集合所需的代码;但是,集合的性能可能仍受到消极影响。避免因多次重新分配导致不佳性能的最佳方法是将初始容量设置为集合的估计的大小。

  • 下限。

    集合的下限是其第一个元素的索引。System.Collections 命名空间中的所有索引集合的下限均为零。Array 的下限在默认情况下为零,但使用 CreateInstance 创建 Array 类的实例时可以定义不同的下限。

System.Collections 类通常可以分为三种类型:

  • 常用集合。

    这些集合是数据集合的常见变体,如哈希表、队列、堆栈、字典和列表。常用集合有泛型和非泛型之分。

  • 位集合。

    这些集合中的元素均为位标志。它们的行为与其他集合稍有不同。

  • 专用集合。

    这些集合都具有专门的用途,通常用于处理特定的元素类型,如 StringDictionary

选择集合类时务必要小心。因为每一集合都有其自身的功能,因此每一集合也就具有其自身的限制。集合的专用性越强,其限制也就越多。有关选择集合的提示,请参见选择集合类

常用的集合类型

 

 

 

 

 

这个地方得专门的去学习,http://msdn.microsoft.com/zh-cn/library/7y3x785f(v=VS.80).aspx,,,,

posted on 2011-01-18 15:39  HWH....  阅读(207)  评论(0编辑  收藏  举报