1.定义Collection 类
在C#语言中定义一个Collection 类最简单的方法就是把在System.Collections 库中已找到的抽象类CollectionBase 类作为基础类。此类提供了一套可以实现构造自身群集的抽象方法集合。CollectionBase 类还提供了一种基础的数据结构——InnerList(一个ArrayList)。此结构可以用作自身类的基础。本章节会看到如何使用CollectionBase 来构造Collection类。
2. 实现Collection 类
弥补Collection 类的全部方法包括一些与类的基础数据结构InnerList 相交互的类型。本节第一部分要实现的方法是Add 方法、Remove 方法、Count 方法和Clear 方法。尽管定义的其他方法可以使类更有用,但是上述这些方法是类的绝对基本要素。Count 最常作为属性来实现,但是这里更喜欢把它用作方法。而且,由于是在基础类CollectionBase 中实现Count, 所以必须用新的关键词来隐藏在CollectionBase 中找到的Count 的定义。同理,Remove类似。
3.具体实现代码如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
public class MyCollection : CollectionBase
{
public void Add(Object Item)
{
InnerList.Add(Item);
}
public void Remove(Object Item)
{
InnerList.Remove(Item);
}
public new int Count()
{
return InnerList.Count;
}
public new void Clear()
{
InnerList.Clear();
}
}
}
4.调用方法如下,使用复杂类型测试:
class Program
{
static void Main(string[] args)
{
MyCollection stus = new MyCollection();
Student s1 = new Student(1, "aaa");
Student s2 = new Student(2, "bbb");
Student s3 = new Student(3, "ccc");
stus.Add(s1);
stus.Add(s2);
stus.Add(s3);
foreach (Student c in stus)
{
Console.WriteLine(c.Name);
}
Console.WriteLine(stus.Count());
Console.ReadLine();
}
}
public class Student
{
private int id;
public int Id
{
get { return id; }
}
private string name;
public string Name
{
get { return name; }
}
public Student(int id,string name)
{
this.id = id;
this.name = name;
}
}