在 SO 上已多次询问如何实现双向枚举器(此处,此处)。我的问题不是如何(在大多数情况下这是微不足道的),而是为什么.NET 平台中不存在这种类型。
public interface IBidirectionalEnumerator<T> : IEnumerator<T>
{
bool MovePrev();
}
显然,有许多集合类型无法实现这一点,因为它们MoveNext()
具有破坏性或改变底层集合的状态。但相反,许多类型可以简单地实现这一点(List
, IList
, LinkedList
, array
)。
为什么不存在这种类型?