【发布时间】:2018-11-29 09:31:31
【问题描述】:
我正在学习底层的迭代器模式,所以最终我可以在某些类中使用它。这是一个测试类:
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();
}
}
我对@987654322@ 部分感到困惑。在我运行的代码测试中,它从未被引用或使用过,但我必须拥有它来实现通用的IEnumerable。
我知道IEnumerable<T> 继承自IEnumerator,所以我必须同时实现这两个。
除此之外,我在使用非通用接口时感到困惑。在调试中它从未进入。谁能帮我理解一下?
【问题讨论】:
-
显式接口实现仅在引用类型是它们实现的接口时使用。如果你愿意
IEnumerable x = new myGenericCollection()你会看到它运行。 -
这是 .NET 1.0 税。如果 1.0 从未出现,该框架看起来会非常不同。但是每个人都必须从某个地方开始,改进不能破坏所有现有程序。
-
@ZoharPeled 确实,这就是问题所在。
标签: c# ienumerable ienumerator