默认情况下,如果我创建一个使用IEnumerable接口的类,并允许visual studio提供默认实现,则会创建两个。界面的明确实现,以及正常的覆盖'界面方法?
这是怎么回事?我在显式接口实现中遇到的唯一用例是使用具有相同方法签名的两个接口,但这似乎不是这里的情况。
答案 0 :(得分:2)
这是因为你有两个接口和两个不同的方法。 IEnumerable<T>
实现IEnumerable
(非通用版本),并且每个都需要GetEnumerator
来实现。通常IEnumerable
是明确实现的,因此该类的大多数用户(未明确键入IEnumerable
的用户)在调用IEnumerable<T>
时将获得首选的GetEnumerator
实现。
我怀疑这个设计被选中(IEnumerable<T>
是IEnumerable
),以避免旧代码无法识别泛型的兼容性问题。