C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]數組各各的區別

List 是ArrayList的泛型,ArrayList裏邊的數據類型是object,List 裏邊的是具體的某種類型,ArrayList類似於向量,可以存儲不同的數據類型在一個數組裏邊(轉換爲了object)。

一般使用的時候儘量使用List <T>,因爲ArrayList存取都要進行一次轉換。

[]類型的數組類似於List <T>,不同的是[]是定長的,而List <T>是長度可變的數組
ICollection主要針對靜態集合;IList主要針對動態集合
IEnumerable <T>繼承自IEnumerable
ICollection <T>繼承自IEnumerable <T>
IList <T>繼承自ICollection <T>
IEnumerable接口
實現了IEnumerable接口的集合表明該集合能夠提供一個enumerator(枚舉器)對象,支持當前的遍歷集合。IEnumerable接口只有一個成員GetEnumerator()方法。
IList接口和ArrayList類的目的是實現動態數組,ArrayList是IList的一個實現。

IEnumerable表明對象是不確定類型的集合並支持簡單迭代,是不是定長根本不關心...

IEnumerable <T>表明對象是指定類型的集合並支持簡單迭代,是不是定長根本不關心...

ICollection是IEnumerable接口的派生接口,表明對象是不確定類型的集合並支持簡單迭代,而且定義了集合的大小、枚舉數和同步方法,這裏的大小是指可以是定長的也可以是不定長的...

IList是ICollection和IEnumerable的派生接口,表明對象是不確定類型的集合並支持簡單迭代,而且定義了集合的大小、枚舉數和同步方法,還可以按照索引單獨訪問,這裏的大小是指可以是定長的也可以是不定長的...

ArrayList類是IList接口的實現,表明對象是不確定類型的大小可按需動態增加的數組...

List <T>類是IList <T>接口的實現,是ArrayList類的泛型等效類並增強了功能,表明對象是可通過索引訪問的對象的強類型列表...在.NET 2.0以上可以完全代替ArrayList,就是說ArrayList已經被淘汰...

而動態數組和鏈表在本質上是不同的...在.NET 2.0以上有雙向鏈表LinkedList <T>泛型類,它也是繼承自ICollection <T>,IEnumerable <T>,ICollection,IEnumerable...

能夠使用foreach遍歷的集合,必須繼承IEnumberable(或IEnumerable <T>泛型接口)接口。
IEnumberable接口只有一個方法:
IEnumerator GetEnumberator(){}//返回一個IEnumberator類型的對象,該對象實現System.Collection.IEnumerator接口。
interface IEnumberator
{
object Current{get;}
bool MoveNext();
void Reset();
}
在程序中拼湊sql時,可以這樣使用List <T>
List <SqlParameter> list=new List <SqlParameter>();
list.Add(new SqlParameter("參數名","參數值"));
...
SqlParameter[] para=list.ToArray();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章