我正在学习迭代器模式的内部原理,以便最终可以在一些类中使用它。下面是一个测试类:
public class MyGenericCollection : IEnumerable<int>
{
private int[] _data = { 1, 2, 3 };
public IEnumerator<int> GetEnumerator()
{
foreach (int i in _data)
{
yield return i;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
我对
IEnumerable.GetEnumerator()
部分感到困惑。在我运行的代码测试中,它从未被引用或使用,但是我必须拥有它来实现通用的IEnumerable
。我确实理解
IEnumerable<T>
继承自IEnumerator
,因此我必须同时实现两者。除此之外,我不明白非通用接口何时会被使用。在调试过程中,它从未被调用。有人能帮我理解吗?
IEnumerable x = new myGenericCollection()
,你会看到它运行。 - undefined