1

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。我是否在不使用唯一的哈希码等方面犯了错误?

4

1 回答 1

2

为了Find返回正确的对象,您的Item类需要重写该Equals方法。当然你也需要重写GetHashCode:虽然FindofLinkedList没有调用GetHashCode,但是这两个方法需要一起改变:

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

于 2013-07-07T09:46:09.193 回答