示例#1
0
        public override IEnumerator <RT> GetEnumerator()
        {
            var toReturn = new DequeEnumerator <RT>(this);

            enumerators.Add(toReturn);
            return(toReturn);
        }
示例#2
0
    public virtual IEnumerator <T> GetEnumerator()
    {
        var toReturn = new DequeEnumerator <T>(this);

        enumerators.Add(toReturn);
        return(toReturn);
    }
示例#3
0
        /// <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);
            }
        }