【发布时间】:2018-01-05 10:13:21
【问题描述】:
来自 mscorlib.dll:
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{..}
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T>
{...}
为什么List<T> 必须明确派生自ICollection<T>, IEnumerable<T>, IEnumerable, 以及派生自IList<T>,而IList<T> 本身派生自ICollection<T>, IEnumerable<T>, IEnumerable?
【问题讨论】:
-
不,这不是来自 mscorlib.dll。 mscorlib.dll 不包含 C# 代码。这是您的反编译器向您展示的内容。
-
最终这只是你的反编译器有帮助。一口气告诉类实现了哪些接口非常有用。这样的声明是模棱两可的,是“接口继承”用词不当的副作用。 C# 语法让这看起来太像那种让你更富有的继承。用词不当,因为这实际上会使您在实现接口成员所需的更多工作上变得更穷。功能,而不是错误。
标签: c# derived-types