This question already has answers here:
When do we do GetHashCode() for a Dictionary?
(4个答案)
6年前关闭。
有没有一种简单的方法可以根据其数据为类创建哈希键???
或为此的一些接口?
我有一个
MyClass非常简单,它包含一个名称和一个字符串数组:
现在,如果我有两个包含相同名称和属性的
我尝试将其构造为一个结构,并尝试也创建一个
我可以使用带有名称和所有参数的算法创建一个字符串键,并创建一个
也许是一个接口(那不会避免算法问题,但是总比没有好)。
(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()
以按值比较实例。