CollectionBase类有接口 IEnumerable、ICollection和IList,但只提供了一些要求的执行的代码,特别是ILIST的Clear()和RemoveAt()的方法,以及ICollection的Count属性。如果要使用提供的功能,就需要自己执行其他代码。
CollectionBase提供了两个受保护的属性,它们可以访问存储的对象本身,我们可以使用List和InnerList,List可以通过IList接口访问项,InnerList则是用于存储项的ArrayLIst对象。
代码
public class Animal
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public Animal()
{
}
public Animal(string newName)
{
name = newName;
}
public override string ToString()
{
return name;
}
}
public class Animals : CollectionBase
{
public void Add(Animal newAnimal)
{
List.Add(newAnimal);
}
public void Remove(Animal oldAnimal)
{
List.Remove(oldAnimal);
}
public Animals()
{
}
}
其中,Add和Remove方法实现为强类型的方法,使用ILIST接口中用于访问项的标准Add方法。
CollectionBase类可以对派生的集合使用foreach语法,以为他实现IEnumerable接口