有沒有一種簡單的方法可以根據它的數據爲類創建一個散列鍵? 或者一些界面呢?我有一個Dictionary<MyClass, int>
。如何使具有相同數據的對象具有相同的密鑰?
MyClass的是非常簡單,它包含了一個名字和一個字符串數組:
class MyClass
{
public string Name {get; private set;}
public string[] Attributes {get; private set; }
//and a constructor and some methods
}
現在,如果我有一個包含相同名稱的兩個MyClass
實例和屬性,我需要一個解釋考慮的,如果他們有相同的鍵。
我試圖讓它成爲一個結構體,並且試圖製作一個Dictionary<string[], int>
,但是所有三種情況都是相同的,即使數據相同,dicionary也會爲每個實例看到不同的鍵。
我可以使用名稱和所有參數的算法創建一個字符串鍵,並創建一個Dictionary<string, int>
,但我想要更自動的東西。有沒有其他方法? 也許一個界面(這不會避免算法,但總比沒有好)。
可能的重複[我們什麼時候做一個字典的GetHashCode()?](http://stackoverflow.com/questions/1407380/when-do-we-do-gethashcode-for-a-dictionary)相關:[爲什麼在重寫Equals方法時重寫GetHashCode非常重要?](http://stackoverflow.com/questions/371328/why-is-it-important-to-override-gethashcode-when-equals-method-被覆蓋)) –
「屬性」中字符串的順序是否重要?案件?是一個'null''Attributes'成員是否等於一個非空但是空的?讓這些類中的兩個「相等」並不明顯或簡單。 – dlev
一切都很重要,但null屬性是不可能的。 (允許爲空) –