在System.Collections中有这几个接口和类,他们继承关系如下:
IEnumerable
ICollection : IEnumerable
IList : ICollection, IEnumerable
ArrayList : IList, ICollection, IEnumerable, ICloneable
我不明为什么要这样继承,ICollection继承了IEnumerable,所以IList就不应该继承IEnumerable了。ArrayList也只需继承IList和ICloneable就够了。以上只是我理解,我知道自己理解肯定是片面的,希望高手能够指点一二。

解决方案 »

  1.   

    这个问题跟C#中接口的显式实现有关。请参考下面的文章:
    http://msdn.microsoft.com/en-us/library/ms173157(VS.80).aspx
      

  2.   

    acqy说的好像不对,查看了一下ArrayList的方法,它并没有显式的实现任何一个接口。在线等待中。
      

  3.   

    楼主是高人,学习了,msdn中有一点解释,我看了以后有点理解,但是怎么在实际中应用还得高人指点,占个座
    关注...........
      

  4.   

    呵呵,他们的功能可不一样,实际是他们是一种递进关系
    IEnumerable ,IEnumerator集合迭代访问
    ICollection:控制对集合访问
    IList:添加数据绑定
    ICloneable :copy复制至于你问的问题,他为啥还要实现自己的东西,答案很简单。因为某些类他没有开放给下一级修改的权限,他自己实现的方法是私有或void型
     ArrayList : IList, ICollection, IEnumerable, ICloneable 看到没有Ilist在第一个,他表示他是继承的IList类,而不是Ilist接口,而IList并没有公开ICollection, IEnumerable这两个接口的信息,所以ArraryList如果想要自己于IList不同的效果,那么他就要实现自己的ICollection, IEnumerable接口