gpt4 book ai didi

c# - IEnumerator.MoveNext() 实现?

转载 作者:太空狗 更新时间:2023-10-29 23:06:47 26 4
gpt4 key购买 nike

我是 c# 的新手,我知道必须实现接口(interface)中定义的方法

但在下面的代码中我没有实现 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# - IEnumerator.MoveNext() 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654411/

26 4 0