【发布时间】:2013-10-17 03:29:47
【问题描述】:
我正在编写一个实现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' 不匹配
【问题讨论】:
-
如果您的 ICollection
的 T 与您的 IEnumerable 的 T 相同,您可能不想添加 IEnumerabl ,因为 ICollection 继承自该已经。除非它们不同,否则显式实现是正确的。 (即使我被遗忘了,更少的冗余代码 = 更好的可维护性。考虑一下) -
先用谷歌搜索错误。这是一个副本:Troubles implementing IEnumerable<T>