Collection <t>:为什么它实现IEnumerable和IEnumerable <t>?</t> </t>

时间:2012-02-17 18:48:34

标签: c# generics collections

我知道 StackOverflow 上出现了完全相同的问题,但它并没有完全回答我的问题。

如果ICollection<T>实现了扩展IEnumerable<T>的{​​{1}},为什么来自 Microsoft 的程序员添加IEnumerable作为{{1}的接口实现?

它是否完全(语义和实现方式)与简单地编写IEnumerable相同?

1 个答案:

答案 0 :(得分:5)

它说它实现了IEnumerable ,因为它实现了IEnumerable

IEnumerable<T>继承IEnumerable,但显然不提供任何实现。实现IEnumerable<T> 的类还必须实现IEnumerable,无论他们是否显式声明他们这样做。

class Foo : IEnumerable<T> 
class Foo : IEnumerable<T>, IEnumerable

无论是哪种情况,都可以实现两个接口的成员。第二类定义简单地使那些看着类和/或文档的人明白,这是一件好事。没有经验或其他不知情的读者可能不知道IEnumerable<T>带来IEnumerable。他们可能不知道实现IEnumerable<T>的类可以在期望IEnumerable的地方使用。这简单地为读者提供了更多的信息,这平均只是一件好事。