private Deque(Dequelette left, IDeque <Dequelette> middle, Dequelette right, System.Int64 count) : this() { if (count <= 0) { throw new System.ArgumentOutOfRangeException("count", "count must be positive."); } else if (null == right) { throw new System.ArgumentNullException("right"); } else if (null == left) { throw new System.ArgumentNullException("left"); } myLeft = left; myMiddle = middle ?? Deque <Dequelette> .Empty; myRight = right; myLongCount = count; myShortCount = (System.Int32)System.Math.Min((System.Int64)System.Int32.MaxValue, myLongCount); unchecked { myHashCode += left.GetHashCode(); myHashCode += myMiddle.GetHashCode(); myHashCode += right.GetHashCode(); } }
public bool MoveNext() { index++; if (hash != deque.GetHashCode()) { throw new InvalidOperationException(); } if (index < 0 || index >= deque.Count) { return(false); } return(true); }
public DequeEnumerator(IDeque <T> input) { deque = input; hash = deque.GetHashCode(); }