【发布时间】:2012-01-06 21:43:44
【问题描述】:
List<T> 类实现了IEnumerable<T> 接口。它有一个方法GetEnumerator,返回一个List<T>.Enumerator。
我有一个如下的类,它给出了一个编译错误,指出GetEnumerator 的返回类型与接口不匹配。
public class InsertionSortedSet<T> : IEnumerable<T>
{
public struct Enumerator : IEnumerator<T>
{
// Required interface implemented
}
// Other interface methods implemented
public Enumerator GetEnumerator()
{
return new Enumerator(this);
}
}
“Entities.Helpers.InsertionSortedSet”没有实现接口成员“System.Collections.Generic.IEnumerable.GetEnumerator()”。 “Entities.Helpers.InsertionSortedSet.GetEnumerator()”无法实现“System.Collections.Generic.IEnumerable.GetEnumerator()”,因为它没有匹配的返回类型“System.Collections.Generic.IEnumerator”。
鉴于List<T> 似乎返回了它自己的Enumerator 类(不是接口),但它确实实现了Enumeration<T> 接口,我很困惑,因为我看不出我有什么不同那个班级。
我的设置有什么问题导致它失败,List<T> 在哪里工作?
我想返回 InsertionSortedSet<T>.Enumerator 而不是界面,因为它避免了装箱,我需要删除它。
【问题讨论】:
标签: c# generics interface enumerator