public Maybe <T> LookAhead(int index) { if (_Disposed) { throw new ObjectDisposedException("IEnumerator<T>"); } if (LookAheadList.Count >= (index + 1)) { return(LookAheadList[index].ToMaybe()); } int itemsToEnumerate = (index + 1) - LookAheadList.Count; for (int itemsEnumerated = 0; itemsEnumerated < itemsToEnumerate; itemsEnumerated++) { bool results = _InnerEnumerator.MoveNext(); if (results) { LookAheadList.Add(_InnerEnumerator.Current); } else { return(Maybe <T> .NoValue); } } return(LookAheadList[index].ToMaybe()); }
public bool MoveNext() { if (_Disposed) { throw new ObjectDisposedException("IEnumerator<T>"); } if (LookAheadList.Count <= 0) { bool results = _InnerEnumerator.MoveNext(); _Current = _InnerEnumerator.Current; return(results); } _Current = LookAheadList[0]; LookAheadList.RemoveAt(0); return(true); }