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

來源:互聯網
上載者:User

標籤:io   使用   ar   for   資料   sp   cti   on   c   

List <T>是ArrayList的泛型,ArrayList裡邊的資料類型是object,List <T>裡邊的是具體的某種類型。

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介面。

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.