public void Clear()
        {
            if (head == null)
            {
                return;
            }
            SinglyListNode <T> current = head;

            while (current != null)
            {
                SinglyListNode <T> tmp = current;
                current = current.next;
                tmp.Invalidate();
            }
            _count = 0;
            _version++;
        }
        private void InternalRemove(SinglyListNode <T> node)
        {
            if (node.list != this)
            {
                throw new Exception("试图从另外一个链表删除元素");
            }
            if (head == null)
            {
                throw new ArgumentNullException("Collection");
            }
            EqualityComparer <SinglyListNode <T> > eq = EqualityComparer <SinglyListNode <T> > .Default;

            if (eq.Equals(node, head))
            {
                //处理头部相等的情况
                if (head.next == null)
                {
                    head.Invalidate();
                }
                else
                {
                    head = head.next;
                }
            }
            else
            {
                SinglyListNode <T> pres    = head;
                SinglyListNode <T> current = head.next;
                while (current != null)
                {
                    //移除
                    if (eq.Equals(current, node))
                    {
                        pres.next = current.next;
                        current.Invalidate();
                    }
                    else
                    {
                        pres    = current;
                        current = current.next;
                    }
                }
            }
            _version++;
            _count--;
        }