集合:可以使用集合來維護物件組。與陣列不同,集合可以控制對集合內的物件進行訪問、搜尋和排序功能。本文主要介紹如何使用和建立集合類。
c#中的陣列實現為system.array 類的例項,它們只是集合類(collection classes)中的一種型別。集合的功能(包括基本功能)可以通過介面來實現,該介面不僅沒有限制我們使用基本集合類,例如system.array,相反,我們還可以建立自己的定製集合類。
system.collections 命名空間中的幾個介面提供了基本的組合功能:
ienumerable 可以迭代集合中的項。
icollection(繼承於ienumerable)可以獲取集合中項的個數,並能把項複製到乙個簡單的陣列型別中。
ilist(繼承於ienumerable 和icollection)提供了集合的項列表,允許訪問這些項,並提供其他一些與項列表相關的基本功能。
idictionary(繼承於ienumerable 和icollection)類似於ilist,但提供了可通過鍵值(而不是索引)訪問的項列表。
一.使用集合
arraylist animalarraylist = new arraylist(); //建立arraylist集合
///以下**用於初始化集合中的成員
cow mycow2 = new cow("hayley");
animalarraylist.add(mycow2);
animalarraylist.add(new chicken("roy"));
寫出每個animal物件的資訊
foreach (animal myanimal in animalarraylist)
object added to arraylist collection, " +
"name = ", myanimal.tostring(), myanimal.name);
console.writeline("arraylist collection contains objects.", animalarraylist.length);///獲取集合長度
簡單陣列是強型別化的,可以直接訪問它們所包含的項型別。所以您可以直接呼叫項的方法:
animalarray[0].feed();
陣列的型別是抽象型別animal,因此不能直接呼叫由派生類提供的方法,而必須使用資料型別轉換:
((chicken)animalarray[1]).layegg();
以下為arrayliat特有的:
使用remove()和removeat()方法刪除項
animalarraylist.removeat(0);
animalarraylist.remove(mycow2);
刪除索引為0的項,會使其他項在陣列中移動乙個位置,所以應使用索引0(而非1)來訪問chicken 物件,不再有索引為1的項了。
addrange()方法不是arraylist 提供的任何介面的一部分,這個方法專用於arraylist 類。它可以給集合新增乙個陣列。
animalarraylist.addrange(animalarray);///將乙個陣列新增到集合中
二.定義集合類
我們可以從乙個類中派生自己的集合,例如system.collections.collectionbase 類,這個抽象類提供了集合類的許多實現
方式。這是推薦使用的方式。
collectionbase 類有介面ienumerable、icollection 和ilist,但只提供了一些簡要的實現**,特別是ilist 的clear()和removeat()方法,以及icollection 的count 屬性。如果要使用提供的功能,就需要自己執行其他**。
public class animals : collectionbase///強型別集合:從collectionbase類中派生出集合類animals
public void remove(animal newanimal) ///移除animal類成員的方法
public animals()
public animal this[int animalindex] 這個animalindex是集合的索引符,等價於陣列的下標
set ///寫訪問器
}三.索引符
索引符(indexer)是一種特殊型別的屬性,可以把它新增到乙個類中,以提供類似於陣列的訪問。實際上,可以通過索引符提供更複雜的訪問,因為我們可以用方括號語法定義和使用複雜的引數型別。它最常見的乙個用法是對項執行簡單的數字索引。
上面集合類中定義了animal索引符。
static void main( )
console.readkey();
}
C 學習筆記(八) 集合
陣列最大的限制就是一旦建立好陣列,它們的大小就是固定的,不能在現有的陣列末尾新增新專案,除非建立乙個新的陣列。c 中的陣列是作為 system.array 類的例項來執行的,它們只是集合類中的一種。集合類一般用於處理物件列表,其功能要比簡單陣列要多,這些功能是通過執行 system.collecti...
C 學習筆記(八) 集合
陣列最大的限制就是一旦建立好陣列,它們的大小就是固定的,不能在現有的陣列末尾新增新專案,除非建立乙個新的陣列。c 中的陣列是作為 system.array 類的例項來執行的,它們只是集合類中的一種。集合類一般用於處理物件列表,其功能要比簡單陣列要多,這些功能是通過執行 system.collecti...
MongoDB學習2 集合
集合就是 mongodb 文件組,類似於 rdbms 關聯式資料庫管理系統 relational database management system 中的 集合存在於資料庫中,集合沒有固定的結構,這意味著你在對集合可以插入不同格式和型別的資料,但通常情況下我們插入集合的資料都會有一定的關聯性。比如...