如何使具有相同数据的对象具有相同的密钥?

时间:2013-05-17 17:59:42

标签: c# dictionary key

有没有一种简单的方法可以根据它的数据为类创建一个哈希键? 或者一些接口?

我有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>,但我想要更自动的东西。还有其他方法吗? 也许是一个界面(这不会避免一个algorythm,但总比没有好。)

1 个答案:

答案 0 :(得分:4)

您需要覆盖Equals()GetHashCode()以按值比较实例。