分类: 嵌入式
2011-07-18 14:36:05
1、Array:提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。命名空间:System。 Array类实现 System.Collections.Generic.IList<(Of <(T>)>)、System.Collections.Generic.ICollection<(Of <(T>)>) 和 System.Collections.Generic.IEnumerable<(Of <(T>)>) 泛型接口。将某一数组强制转换为这三种接口之一时需要注意的关键一点是,添加、插入或移除元素的成员会引发NotSupportedException异常。与大多数类不同,Array 提供CreateInstance方法,以便允许后期绑定访问,而不是提供公共构造函数。不保证会对 Array 进行排序。 在执行需要对Array 进行排序的操作(如BinarySearch)之前,必须对 Array 进行排序。数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃! Array类定义了若干静态函数,提供对数组类型的变量的操作方法。例如: Array aa
= Array.CreateInstance(typeof(String), 9); 2、ArrayList:使用大小可按需动态增加的数组实现 IList 接口。命名空间:System.Collections。 ArrayList 的容量是 ArrayList 可以保存的元素数。随着向 ArrayList 中添加元素,容量通过重新分配按需自动增加。可通过调用 TrimToSize 或通过显式设置 Capacity 属性减少容量。使用整数索引可以访问此集合中的元素。 此集合中的索引从零开始。ArrayList 接受 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing) 作为有效值并且允许重复的元素。只要集合未修改,ArrayList 就可以同时支持多个阅读器。若要保证 ArrayList 的线程安全,则必须通过由 Synchronized 方法返回的包装来执行所有操作。该类实现 IList, ICollection, IEnumerable, ICloneable泛型接口。其子元素是object类型的对象。 ArrayList类定义了对实例化对象进行操作的若干方法方法:
1:Add()向数组中添加一个元素, ArrayList 还同时支持多个阅读器。相应的属性和方法举例如下: Synchronized(?)方法:返回同步的(线程安全)列表包装。“?”表示方法参数。 SyncRoot属性:获取可用于同步 ArrayList 访问的对象。 IsSynchronized属性:获取一个值,该值指示是否同步对 ArrayList 的访问(线程安全)。 ArrayList myCollection = new ArrayList(); // Creates a synchronized wrapper around the
ArrayList. // Displays the sychronization status of both
ArrayLists.
List <T> 类是 ArrayList
类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList PS:简要总结如下: Array是针对 任意类型、固定长度的。 4、Hashtable :表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。命名空间: System.Collections;Dictionary:表示键和值的集合。 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用
Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护,
效率大减。单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快,
容量利用更充分。Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用
Dictionary 能获得一定方便。对于值类型,特定类型(不包括 Object)的 Dictionary |