1. 程式人生 > >c#自定義集合類

c#自定義集合類

在System.Collections 名稱空間下,常用的集合類中,這兩個類不屬於集合,而是作為自定義集合類的基類。
內建的集合並不能滿足所有的資料集合處理,c#為使用者自定義集合提供條件。這兩個基類如下:
CollectionBase:為強型別集合提供abstract 基類
DictionaryBase:為鍵/值對的強型別集合提供abstract基類。
集合類有鍵值對的字典集合和一般集合,這兩個基類一個作為非字典集合的基類,一個作為字典集合的基類。

下面以集合CollectionBase作為基類:

class Program
    {
        static void Main(string
[] args) { Food food1 = new Food("蘋果", 2.0); Food food2 = new Food("香蕉", 3.0); Food food3 = new Food("橘子", 4.0); Food food4 = new Food("西紅柿", 5.0); FoodList foodlist = new FoodList(); foodlist.Add(food1); foodlist.Add(food2); foodlist.Add(food3); foodlist.Add(food4); for
(int i = 0; i < foodlist.Count; i++) { Console.WriteLine("名稱:{0} 價格:{1}",foodlist.GetItem(i).fname,foodlist.GetItem(i).fprice); } Console.WriteLine("刪除index=1的元素後:"); foodlist.RemoveAt(1); for (int i = 0; i < foodlist.Count; i++) { Console.WriteLine("名稱:{0} 價格:{1}"
, foodlist.GetItem(i).fname, foodlist.GetItem(i).fprice); } } } public class Food { public string fname; public double fprice; public Food() { } public Food(string name, double price) { fname = name; fprice = price; } public string fnames { get { return fname;} set { fname = value; } } public double fprices { get { return fprice; } set{fprice=value;} } } public class FoodList : CollectionBase { public virtual int Add(Food food)//重寫父類的新增方法 { return InnerList.Add(food); } public new void RemoveAt(int index)//父類中該方法不允許重寫,使用new關鍵字重寫 { InnerList.RemoveAt(index); } public Food GetItem(int index) //根據索引獲得類物件 { return (Food)List[index]; } }