System.Xml.Serialization.CodeGenerator.TryDequeueLocal C# (CSharp) Method

TryDequeueLocal() private method

private TryDequeueLocal ( Type type, string name, LocalBuilder &local ) : bool
type Type
name string
local LocalBuilder
return bool
        private bool TryDequeueLocal(Type type, string name, out LocalBuilder local)
        {
            // This method can only be called between BeginMethod and EndMethod (i.e.
            // while we are emitting code for a method
            Debug.Assert(_freeLocals != null);

            Queue<LocalBuilder> freeLocalQueue;
            Tuple<Type, string> key = new Tuple<Type, string>(type, name);
            if (_freeLocals.TryGetValue(key, out freeLocalQueue))
            {
                local = freeLocalQueue.Dequeue();

                // If the queue is empty, remove this key from the dictionary
                // of free locals
                if (freeLocalQueue.Count == 0)
                {
                    _freeLocals.Remove(key);
                }
                return true;
            }
            local = null;
            return false;
        }