Exemplo n.º 1
0
        public bool MoveNext()
        {
            switch (_status)
            {
            case DoublyLinkedListEnumeratorStatus.New:
            {
                _current = _first;
                _status  = GetStatusAfterMovingNext(_current);
                return(_status == DoublyLinkedListEnumeratorStatus.HasValue);
            }

            case DoublyLinkedListEnumeratorStatus.HasValue:
            {
                _current = _current.Next;
                _status  = GetStatusAfterMovingNext(_current);
                return(_status == DoublyLinkedListEnumeratorStatus.HasValue);
            }

            case DoublyLinkedListEnumeratorStatus.ReachedTheEnd:
                return(false);
            }

            throw new InvalidOperationException("Unknown status");
        }
Exemplo n.º 2
0
 public void Reset()
 {
     _current = null;
     _status  = DoublyLinkedListEnumeratorStatus.New;
 }
Exemplo n.º 3
0
        private static DoublyLinkedListEnumeratorStatus GetStatusAfterMovingNext(DoublyLinkedListNode <T> current)
        {
            var hasNodes = current != null;

            return(hasNodes ? DoublyLinkedListEnumeratorStatus.HasValue : DoublyLinkedListEnumeratorStatus.ReachedTheEnd);
        }
Exemplo n.º 4
0
 public DoublyLinkedListEnumerator(DoublyLinkedListNode <T> first)
 {
     _first = first;
 }