private IEnumerable <T> CreateEnumerator(LinkedList <T> list, LinkedListNode <T> start, TIteratorDirection dir) { LinkedListNode <T> current = null; do { if (current == null) { current = start; } else { if (dir == TIteratorDirection.Forward) { current = current.Next; } else { current = current.Previous; } } if (current != null) { yield return(current.Value); } } while(current != null); }
public BidirectionalIterator(LinkedList <T> list, LinkedListNode <T> start, TIteratorDirection dir) { enumerator = CreateEnumerator(list, start, dir).GetEnumerator(); enumType = enumerator.GetType(); }