对IEnumerable<T>,IDictionary<Tkey,TValue>,ICollection<T>,IList<T>的总结
1、IEnumerable<T>接口和IEnumerable接口
实现了IEnumerable接口的集合表明该集合能够提供一个enumerator(枚举器)对象,支持当前的遍历集合。IEnumerable接口只有一个成员GetEnumerator()方法。
IEnumerator接口实现了IEnumerator接口的集合实现了从一个元素到另一个元素向前移动的方法,同时也可以随时返回初始处。
IEnumerator接口是只读的。
包括以下三个成员
MoveNext()方法调整遍历指针移向集合的下一个元素。注意,遍历指针的初始位置是集合中第一个元素的前面。要指向第一个元素,必须先调用一次MoveNext()方法。该方法返回一个布尔值,如果成功遍历到下一个元素,则返回true;如果指针移出末尾,则返回false。
Reset()方法用于设置遍历指针指向初始位置,即集合中第一个元素的前面。
Current属性返回集合中当前对象的引用。
2、ICollection<T>接口和ICollection接口
该接口是IEnumerable接口的子接口,定义了集合的大小、IEnumerator接口和同步方法。在IEnumerable接口的基础上增加了以下功能。
Count;该属性返回集合中元素的数目。
CopyTo(Array array, int index);该方法用于实现从集合中拷贝元素到一个一维数组中。
3、IList接口和IList<T>接口
ILIst接口包括以下方法和属性
Add()和Insert()方法用于向集合中添加条目,使用索引来指定项目要插入的位置,其中首元素的索引为0;Add()将新条目添加到尾部。
Remove()和RemoveAt()用于从列表中删除条目。Clear()用于删除所有条目。
IndexOf和Contains()用于搜索该列表。
this属性用于获取或设置索引指定的值。C#中可以使用[]运算符进行访问
IList<T>接口
ArrayList类
ArrayList类实际上是C#中的”动态数组”。数组在new创建后,其大小(Length)是不能改变的,而ArrayList中的数组元素的个数(Count)是可以改变的,元素可以加入及移出。
4、IDictionary<Tkey,Tvalue>接口IDictionary
IDictionary接口提供了一组”关键字/值”的集合,Hashtable是IDictonary的一个重要实现。
IDictionary接口是一个包含一组”关键字/值”对的数据结构,每个值都由相应的关键字来定义。关键字和值可以是任何数据类型,关键字必须唯一且非空。
Add()方法添加一个指定的关键字和值的条目到IDictionary接口。
this属性检索指定关键字所对应的值。
Keys和Values属性分别返回包含所有关键字和值的集合。
Remove()用于删除指定关键字对应的条目。Clear()用于删除所有条目。
GetEnumator()返回一个IDictionaryEnumerator,可用于遍历IDictionary接口。
IDictionaryEnumerator接口
IDictionaryEnumerator接口基于IEnumerator接口,可以使用Entry属性检索当前条目的关键字和值,或者使用Key和Value属性分别检索。Entry属性返回一个DictionaryEntry对象。
DictionaryEntry是一个值类型,包含Key和Value两个字段,每个字段都是一个对象引用。s
Hashtable类
Hashtable(哈希表)表示一个关键字和值相关联的集合,它的组织方式能够高效地检索其中的值。
HashMap和Hashtable及HashSet的区别
http://www.blogjava.net/fisher/archive/2006/12/13/87398.html