【发布时间】:2015-04-15 15:30:11
【问题描述】:
我是 C# 的新手,我知道必须实现接口中定义的方法
但是在下面的代码中我没有实现 MoveNext() 方法
static void Main()
{
List<int> list = new List<int>();
list.Add(1);
list.Add(5);
list.Add(9);
List<int>.Enumerator e = list.GetEnumerator();
Write(e);
}
static void Write(IEnumerator<int> e)
{
while (e.MoveNext())
{
int value = e.Current;
Console.WriteLine(value);
}
}
我也签入了元数据,它没有提供任何实现。
那么为什么编译器没有抛出任何错误? MoveNext() 方法的实现在哪里 & 它如何移动到下一个值?
MoveNext() 方法的代码是编译器自动生成的吗? 请帮忙
【问题讨论】:
-
你打电话给
list.GetEnumerator()。这将返回一个IEnumerator<int>的实例。当你有它的实例时,为什么你必须实现它? :) -
如果您拥有
class myClass : IEnumerator<int>,那么它将迫使您“实施”下一步。但是你还没有声明你的类是IEnumerator<int>类型,你正在消费它。
标签: c# interface ienumerable