classEnumerableTest:System.Collections.Generic.IEnumerable{privateSystem.Collections.Generic.List_stringList;publicList.EnumeratorGetEnumerator(){...
class EnumerableTest : System.Collections.Generic.IEnumerable
{
private System.Collections.Generic.List _stringList;
public List.Enumerator GetEnumerator()
{
return this._stringList.GetEnumerator();
}
}
这个类是无法编译的,有人知道原因吗?求解惑
List.Enumerator 是同时实现IEnumerator和IEnumerator接口的,为什么会出这样的错:
错误 1 “sharpTest.EnumerableTest”不实现接口成员“System.Collections.IEnumerable.GetEnumerator()”。“sharpTest.EnumerableTest.GetEnumerator()”无法实现“System.Collections.IEnumerable.GetEnumerator()”,因为它没有匹配的返回类型“System.Collections.IEnumerator”。 E:\Project\C#\sharpTest\sharpTest\Program.cs 14 11 sharpTest
错误 2 “sharpTest.EnumerableTest”不实现接口成员“System.Collections.Generic.IEnumerable.GetEnumerator()”。“sharpTest.EnumerableTest.GetEnumerator()”无法实现“System.Collections.Generic.IEnumerable.GetEnumerator()”,因为它没有匹配的返回类型“System.Collections.Generic.IEnumerator”。 E:\Project\C#\sharpTest\sharpTest\Program.cs 14 11 sharpTest
很基础的问题,刚弄明白:
IEnumerable继承自System.Collections.IEnumerable,必须实现这两个接口
两个接口中都定义了GetEnumerator()方法,但返回类型却不完全相同,前者是System.Collections.Generic.IEnumerator,后者是System.Collections.IEnumerator
由于两个方法的名称和参数完全相同,只能将其中一个方法显式实现,另一个隐式实现,如下:
class EnumerableTest : IEnumerable
{
public List.Enumerator GetEnumerator()
.....
public List.Enumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
展开