我正在审查继承,对继承接口(interface)有些困惑。让我们以List<T>
为例.
我有这个基本声明:
List<string> categoryList = new List<string>();
当我点击 Go to Definition
当光标在 List
上时,它向我展示了这段代码,
public class List<T> : IList<T>, ICollection<T>, IList, ICollection,
IReadOnlyList<T>, IReadOnlyCollection<T>,
IEnumerable<T>, IEnumerable
{
}
如果我点击 Go to Definition
当光标位于 IList<T>
上时再次
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
}
现在我的问题是:为什么 List<T>
还在继承ICollection<T>
, IEnumerable<T>
和 IEnumerable
什么时候IList<T>
已经继承了吗?
最佳答案
我相信这正是 Visual Studio 表示定义的方式,它向您展示了整个界面层次结构。
如果您查看 Reference Source for List<T> ,您会看到它只实现了 IList
public class List<T> : IList<T>, System.Collections.IList, IReadOnlyList<T>
{
// bla bla bla
}
关于c# - 混淆为什么接口(interface)在基接口(interface)已经继承的情况下又被继承了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336884/