This question already has answers here:
When do we do GetHashCode() for a Dictionary?
                                
                                    (4个答案)
                                
                        
                                6年前关闭。
            
                    
有没有一种简单的方法可以根据其数据为类创建哈希键???
或为此的一些接口?

我有一个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>,但是所有这三种情况都是相同的,即使有相同的数据,字典对每个实例也会看到不同的键。

我可以使用带有名称和所有参数的算法创建一个字符串键,并创建一个Dictionary<string, int>,但是我想要更自动的东西。还有其他办法吗?
也许是一个接口(那不会避免算法问题,但是总比没有好)。

最佳答案

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

07-28 01:38
查看更多