.net中大量的集合對象會讓人產生一些疑惑,這篇“導游”指南將幫助你在system.collections名域中找到自己的方向。
集合提供了一種將任意對象格式化存儲的方法,我們都知道在日常的程序設計中,它們是多么有幫助。.net類庫提供了一系列令人困惑的集合對象,而每種對象又有專門的用途,看上去這似乎阻礙了我們利用這些“財富”,其實,更多的選擇意味著更加靈活,但同時也意味著更加復雜。因此,它應當引起你的關注,你應對在何種情況下使用那種類型的集合有充分的理解,隨我一起來了解如何使用.net的集合。
.net集合的定義


從.net的角度來看,一個集合可以被定義為一個實現了一個或多個system.collections.icollection、system.collections.idictionary和system.collections.ilist界面的對象,根據這一定義,我將在system.collections名域空間范圍內的“內建”的集合分為三類:
有序集合:只實現icollection界面的集合,事實上的插入的順序決定了對象從集合中被檢索到的順序,system.collections.stack類和system.collections.queue是兩個icollection集合的例子。
索引集合:實現了ilist界面的集合,他們的內容可以通過一個以零為基準的數字索引中檢索到,就像數組一樣。system.collections.arraylist對象是索引集合的一個例子。
鍵值集合:實現了idictionary界面的集合,包含了可以按照某些關聯鍵值檢索到的項目,idictionary的內容通常以鍵值為基礎按照某些形式進行排序,在檢索時,這些內容可以按照排好序的枚舉表示。system.collections.hashtable類實現了idictionary的界面。
正如你所看到的,一個給定集合的功能是由專門的界面或它所實現的界面控制的,如果你對面向對象程序設計沒有大量的接觸,這一點看上去即使不是毫無意義,也會讓人非常困惑。然而,你應當知道,以這種方式建立一個對象的功能,不僅給與了相似的對象一系列相似的方法簽名,而且還允許在必要的時候將這些對象當作本質上相同的類來對待,這就是在面向對象程序設計中所說的多態性。
system.collections的“導游”指南
在system.collections名域空間中包括了6個內建的普通集合,你可以在程序中使用它們,另外有少許特殊的集合可以在system.collections.specialized中找到,你會發現在某些場合中它們非常有用。在少數例外的情況下,每一個特殊的集合與一個內建的集合擁有相似的功能,讓我們先來看一下這些內建的集合和一些不太深奧的特殊集合。
堆棧與隊列
system.collections.stack和system.collections.queue類是只實現了icollection界面的類,它們將system.object類型的項目按照加入的順序排列到集合中,集合中的對象只能按照以下的順序獲取到:堆棧是后進先出,而隊列是先進先出,通常,你會在以下情況中考慮使用這些集合:
項目的接收和處理順序很重要時;
你可以在處理一個項目之后刪除它;
你不需要在集合中訪問任意項目;
數組表
system.collections.arraylist類是只實現了ilist界面的類,數組與集合的混合體是對它最好的描述,數組表將項目按照加入的順序排列,每個項目被分配一個索引標識符,依據相關的索引號可以按照任意順序檢索,數組表會因項目的增加而變大,這使它比一般的數組更靈活,然而,所有可被轉化為system.object的項目均可被數組表接受,因而它比傳統數組的系統開銷要大很多,而且它也不是強類型(strongly typed)。
新聞熱點
疑難解答
圖片精選