如何使用链表<T>。Find() 方法,其中 T 是用户定义的数据类型(对象)



C#中LinkedList的Find()方法适用于字符串等,但如何将其用于结构、对象等?

这是我的代码:

    {
        LinkedList<Item> TestLinkedList = new LinkedList<Item>();
        TestLinkedList.AddFirst(new Item(3, "Head n Shoulders"));
        TestLinkedList.AddAfter(TestLinkedList.First, new Item(45, "Dell"));
        //Get the 2nd node in the linklist
        Item c = new Item(3, "Head n Shoulders");
        LinkedListNode<Item> Node2 = TestLinkedList.Find(c);

        TestLinkedList.AddAfter((Node2), new Item(32, "Adidas"));
        foreach (Item i in TestLinkedList)
        {
            i.Print();
        }
        Console.ReadKey();
    }

对于Node2,它返回NULL。我没有使用唯一的哈希代码等是不是犯了错误?

为了使Find返回正确的对象,Item类需要重写Equals方法。当然,您还需要重写GetHashCode:虽然LinkedListFind不调用GetHashCode,但这两种方法需要一起更改:

覆盖Equals(Object)的类型也必须覆盖GetHashCode;否则,哈希表可能无法正常工作。

相关内容

  • 没有找到相关文章