c#自定義集合類
阿新 • • 發佈:2018-12-26
在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];
}
}