public object[] ToArray()
        {
            object[]   result  = new object[Count];
            DoublyNode current = First;

            for (int i = 0; i < Count; i++)
            {
                result[i] = current.Data;
                current   = current.Next;
            }
            return(result);
        }
        public void AddFirst(object obj)
        {
            DoublyNode node = new DoublyNode(obj);

            node.Next      = First;
            First.Previous = node;
            First          = node;

            if (Count == 0)
            {
                Last = node;
            }

            Count++;
        }
        public bool Contains(object obj)
        {
            DoublyNode current = First;

            while (current != null)
            {
                if (current.Data.Equals(obj))
                {
                    return(true);
                }

                current = current.Next;
            }

            return(false);
        }
        public void Add(object obj)
        {
            DoublyNode node = new DoublyNode(obj);

            if (First == null)
            {
                First = node;
            }
            else
            {
                Last.Next     = node;
                node.Previous = Last;
            }

            Last = node;
            Count++;
        }
        public void Remove(object obj)
        {
            DoublyNode current = First;

            while (current != null)
            {
                if (current.Data.Equals(obj))
                {
                    break;
                }
                current = current.Next;
            }

            if (current != null)
            {
                if (current.Next != null)
                {
                    current.Next.Previous = current.Previous;
                }
                else
                {
                    Last = current.Previous;
                }

                if (current.Previous != null)
                {
                    current.Previous.Next = current.Next;
                }
                else
                {
                    First = current.Next;
                }

                Count--;
            }
        }