示例#1
0
文件: Pipe.cs 项目: Ravi5ingh/Utility
        public T TakeFromLeft()
        {
            if (TryTakeEdgeCase(out var returnValue))
            {
                return(returnValue);
            }

            var retVal = leftElement.Value;

            leftElement = leftElement.RightNeighbor;

            return(retVal);
        }
示例#2
0
文件: Pipe.cs 项目: Ravi5ingh/Utility
        public T TakeFromRight()
        {
            if (TryTakeEdgeCase(out var returnValue))
            {
                return(returnValue);
            }

            var retVal = rightElement.Value;

            rightElement = rightElement.LeftNeighbor;

            return(retVal);
        }
示例#3
0
文件: Pipe.cs 项目: Ravi5ingh/Utility
        public void AddFromRight(T value)
        {
            var newElement = new PipeElement <T>(value);

            if (IsPipeEmpty())
            {
                leftElement  = newElement;
                rightElement = newElement;
            }

            rightElement.RightNeighbor = newElement;
            newElement.LeftNeighbor    = rightElement;
            rightElement = newElement;
        }
示例#4
0
文件: Pipe.cs 项目: Ravi5ingh/Utility
        private bool TryTakeEdgeCase(out T returnValue)
        {
            if (IsPipeEmpty())
            {
                throw new InvalidOperationException("Cannot take anymore. Pipe is empty");
            }
            if (leftElement == rightElement)
            {
                returnValue  = leftElement.Value;
                leftElement  = null;
                rightElement = null;
                return(true);
            }

            returnValue = default(T);
            return(false);
        }