.NET官方文档中非泛型IList接口的定义是:
public interface IList : ICollection, IEnumerable
而ICollection接口的定义本身也会继承自IEnumerable,如下图:
public interface ICollection : IEnumerable
既然IList 继承自ICollection ,而ICollection 又继承自IEnumerable,
那么为何IList的定义中还要显示声明继承自IEnumerable呢?如果IList的定义去掉显示的IEnumerable继承, 像下面这样会有什么潜在的问题?
public interface IList : ICollection
类似这样重复继承相同接口的现象在.NET Framework BCL中有很多,为什么要这样设计呢?是基于什么样的思想呢?
微软早期设计的一个工具导致的