IEnumerator.MoveNext() 实施?
IEnumerator.MoveNext() implementation?
我是 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() 方法的代码是否由编译器自动生成?
请帮忙
原因是,您没有实现IEnumerator<int>
,您使用了List<int>
,后者已经实现并为MoveNext
提供了实现。
这里是actual implementation,代码是:
public bool MoveNext() {
List<T> localList = list;
if (version == localList._version && ((uint)index < (uint)localList._size))
{
current = localList._items[index];
index++;
return true;
}
return MoveNextRare();
}
我是 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() 方法的代码是否由编译器自动生成? 请帮忙
原因是,您没有实现IEnumerator<int>
,您使用了List<int>
,后者已经实现并为MoveNext
提供了实现。
这里是actual implementation,代码是:
public bool MoveNext() {
List<T> localList = list;
if (version == localList._version && ((uint)index < (uint)localList._size))
{
current = localList._items[index];
index++;
return true;
}
return MoveNextRare();
}