【发布时间】:2020-04-04 11:21:12
【问题描述】:
据我了解,给定一个接口 Interface Parent,然后是一个从 Parent 继承的接口,例如:Interface Child : Parent,Child将自动要求实现 Parent 的成员,而无需指定。
然而,我注意到在实现接口时同时指定了 Parent 和 Child 的所有内置类型。 例如:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>...
离开上面的内置 List 类型的例子,为什么它专门实现 ICollection 例如当 IList 已经这样做了?既然 ICollection 已经这样做了,为什么还要实施 IEnumerable?等等。
这是一般情况下应该做的事情,还是有特定原因为内置类型做这件事?
【问题讨论】:
-
在哪里查看此信息?请记住,由于各种原因,文档或反编译代码可能会显示原始源代码中未出现的接口。根据the reference source,
List<T> : IList<T>, System.Collections.IList, IReadOnlyList<T>是完整的声明。 -
(另外,请记住
List<T>不是 C# 的“内置类型”。它是一个 .NET Framework类型) -
是的,为了您的方便,反编译显示了隐含/间接接口以及显式接口。无论如何,再次列出它们是多余的,并且没有任何效果。
-
一开始就没有明确的实现。 documentation page 显示了所有已实现的接口,这并不意味着源代码看起来那样。 There are some explicit implementations 但这些主要是非通用接口
-
你说得对,这是反编译器的结果。谢谢!问题可以结束了。