public override IEnumerator <RT> GetEnumerator() { var toReturn = new DequeEnumerator <RT>(this); enumerators.Add(toReturn); return(toReturn); }
public virtual IEnumerator <T> GetEnumerator() { var toReturn = new DequeEnumerator <T>(this); enumerators.Add(toReturn); return(toReturn); }
/// <summary> /// Returns an instance to the pool, so it is available for re-use. /// It is advised that the item is reset to a default state before being returned. /// </summary> /// <param name="instance">The instance to return to the pool.</param> public void Return(T instance) { DequeEnumerator de; if (instances.TryGet(Thread.CurrentThread, out de)) { de.Deque.LocalPush(instance); } else { de = new DequeEnumerator() { Deque = new Deque <T>(), Enumerator = instances.GetEnumerator() }; de.Deque.LocalPush(instance); instances.Add(Thread.CurrentThread, de); } }