我正在开发一个集合类,它应该实现 IEnumerator 和 IEnumerable。
在我的第一种方法中,我直接实现了它们。现在我发现了 yield 关键字,并且我已经能够用一个只读属性 Values 替换 IEnumerator/IEnumerable 接口来简化一切,该属性使用 yield 在循环中返回一个 IEnumerable。
我的问题:是否可以在不实现 IEnumerable/IEnumerator 的情况下以可以迭代类本身的方式使用 yield?
即,我想要一个类似于框架集合的功能:
List<int> myList = new List<int>();
foreach (int i in myList)
{
...
}
这可能吗?
更新:看来我的问题措辞不当。我不介意实现 IEnumerator 或 IEnumerable;我只是认为唯一的方法是使用旧的 Current/MoveNext/Reset 方法。