当我转到List <>的定义时,我可以看到它具有实现接口IEnumerator<T>IDisposable和IEnumerator 的公共结构Enumerator 。
IEnumerator应该强制执行Reset-除了Current和MoveNext。但是仅实现了Current和MoveNext。怎么可能?
在哪里找到List <>的Reset()?
var list = new List<int>();
list.Add(23);
list.Add(44);
var Enumerator = list.GetEnumerator();
while (Enumerator.MoveNext())
{
Console.WriteLine(Enumerator.Current);
}
Enumerator.
Run Code Online (Sandbox Code Playgroud)
当我在代码中尝试时,没有Reset():
好的-我试图显示屏幕截图,但是他们不允许我这样做。
但是复制上面的代码后,在Enumerator 的Dot运算符(。)之后没有显示Reset-Method 。
有人知道这一点吗?
我看到它称为mscorlib的一部分的IEnumerator的重置。
var list = new List<int>();
list.Add(23);
list.Add(44);
var Enumerator = list.GetEnumerator();
Enumerator.MoveNext();
Enumerator.MoveNext();
Console.WriteLine(Enumerator.Current);
((IEnumerator<int>)Enumerator).Reset();
Enumerator.MoveNext();
Run Code Online (Sandbox Code Playgroud)
但是,由于IEnumerator是接口,因此如何调用代码?
IEnumerator中的Reset()应该只是一个定义,实现应留给使用该接口的任何人。
但是在某种程度上,这里仅通过定义要实现的接口即可提供实际功能。我在任何地方都看不到实际的实现,而那部分我不理解。