CollectionBase内部利用
int   IList.Add(object   value);   //*****   注意这里   ******  显示声明接口
而CollectionBase内部使用arratlist来作为容器进行添加删除,
我不明白的是比如
public class Cards : CollectionBase
    {
        public void Add(Card newCard)
        {
            List.Add(newCard);
        } 
这里的add按理说应该是调用上面的方法的吧?
可为什么我不能理解是调用arraylist里面的add方法呢?
毕竟list是arraylist的实例化,不知道说的清楚吗?

解决方案 »

  1.   

    CollectionBase实现了IList 接口
    里面的List 其实return的就是 他本身.protected IList List
    {
        get
        {
            return this;
        }
    }然后List的每个方法里(如List.Add()); 里面是实现了对InnerList就是那个arratlist的的具体操作.
    包括一些异常处理和数据验证
    当然用InnerList直接Add效果是一样的
      

  2.   

    对就是这个意思,非常感谢kkme88,既然效果一样为什么不直接arraylist进行操作,
    而要继承ilist接口来add操作呢,归根结底不还是对arraylist的add操作?
    就是为了进行一些验证?
      

  3.   

    而CollectionBase内部使用arratlist来作为容器进行添加删除
    ======================================================
    这句话不知道是谁说的,有何依据。如果你看过微软放出来的源代码,或许就不会有这类疑问了。