集合可以說是數(shù)組的超集,集合可以維護對象數(shù)組,集合包含了更高級的功能。例如控制對其包含的對象的訪問、搜索和排序等。數(shù)組是固定的,一旦我們創(chuàng)建好了數(shù)組,不能在現(xiàn)有數(shù)組的末尾添加新項,除非我們創(chuàng)建新的數(shù)組。
C#中的數(shù)組實現(xiàn)為System.Array類的實例,它們只是集合類中的一種,集合類的功能重要通過實現(xiàn)System.Collection名稱空間中的接口而獲得的。
System.Collection名稱空間中的幾個接口提供了基本的功能集合:


System.Array類實現(xiàn)了IList,ICollection,IEnumerable,但不支持IList的一些高級功能。
如何自定義集合類
Collection類有接口IEnumerable,ICollection和IList,可以使用其提供的List和InnerList兩個受保護的屬性,它們可以訪問存儲的對象本身。
有一個Animal類:
Public class Animal{ //類成員}實現(xiàn)它的集合:
Public class Animals : CollectionBase{ public void Add(Animal newAnimal) { List.Add(newAnimal); } public void Remove(Animal oldAnimal) { List.Remove(oldAnimal); } public Animals() { }}如果要通過索引訪問,就要添加索引符。添加索引符如下:
public class Animals : CollectionBase{ ... public Animal this[int animalIndex] { get { return (Animal)List[animalIndex]; } set { List[animalIndex] = value; } }}自定義Dictionary,使可以通過關鍵字訪問
和上一個集合的實現(xiàn)例子非常類似,但是還是有一定的差別。要實現(xiàn)IDictionary接口,所以我們可以繼承DictionaryBase,具體細節(jié)如下:
public class Animals : DictionaryBase{ public void Add(string newID, Animal newAnimal) { Dictionary.Add(newID, newAnimal); } public void Remove(string oldID) { Dictionary.Remove(oldID); } public Animals() {} public Animal this[string animalID] { get { return (Animal)Dictionary[animalID]; } set { Dictionary[animalID] = value; } }}新聞熱點
疑難解答