实现ICollection时,无法同时实现GetEnumerator返回IEnumerator和IEnumerator <T>

Fra*_*y I 2 .net c# generics

我正在编写一个实现的简单集合类ICollection<T>.一切都基本有效,除非我添加一个IEnumerator<T> GetEnumerator()方法,它抱怨我没有IEnumerator GetEnumerator()方法.反之亦然.我不允许两者都有,因为它们只有返回类型不同,所以我真的很困惑编译器想要的东西.

以下是错误,正如它们给我的错误:

错误CS0738:MyClass<T>' does not implement interface memberSystem.Collections.Generic.IEnumerable.GetEnumerator()'和最佳实现候选者MyClass<T>.GetEnumerator()' return typeSystem.Collections.IEnumerator'不匹配接口成员返回类型`System.Collections.Generic.IEnumerator'

或者,或者我可以:

错误CS0738:MyClass<T>' does not implement interface memberSystem.Collections.IEnumerable.GetEnumerator()'和最佳实现候选者MyClass<T>.GetEnumerator()' return typeSystem.Collections.Generic.IEnumerator'不匹配接口成员返回类型`System.Collections.IEnumerator'

Sim*_*ead 6

明确地实施它们:

IEnumerator IEnumerable.GetEnumerator() {
}

IEnumerator<T> IEnumerable<T>.GetEnumerator() {
}

// etc.
Run Code Online (Sandbox Code Playgroud)

显式接口实现是如何实现的.在MSDN上阅读它:http://msdn.microsoft.com/en-us/library/aa288461( v = vs.71).aspx

  • 您可能不希望IEnumerable <T>版本显式. (3认同)