问题:
你需要向一个类中添加foreach支持,但是通常永固添加迭代器的方式(即在类型上实现IEnumerable并从一个成员函数返回执行这个IEnumerable的引用)并不足够灵活。除了简单的从第一个元素迭代到最后一个元素之外,还需要从最后一个元素迭代到第一个元素,并且需要能够在每次迭代时跨越或跳过预定义数量的元素。你想使所有这些类型的迭代器可供你的类使用。
解决方案:
例2-4中所示的Container<T>类充当一个名为internalList的私有List<T>的容器。我们实现了Container,因此可以在foreach循环中使用它来遍历私有internalList。
例2-4:创建自定义迭代器
public class Container<T> : IEnumerable<T>
{
public Container() { }
private List<T> _internalList = new List<T>();
// This iterator iterates over each element from first to last
public IEnumerator<T> GetEnumerator() => _internalList.GetEnumerator();
// This iterator iterates over each element from last to first
public IEnumerable<T> GetReverseOrderEnumerator()
{
forea