我正在尝试做以下类似的事情:
class Test
{
public string Name { get; set;}
public string Location { get; set;}
public Test(string name, string location)
{
Name = name;
Location = location;
}
}
现在,在另一个类的一个方法中,我正在尝试将这些测试类添加到一个Dictionary中,并使用KeyValuePair。
Dictionary<Test,int> resources = new Dictionary<Test,int>();
resources.Add(new Test("First Resource", "Home"), 1);
现在,我想做的并且需要能够做的是:
bool contains = resources.ContainsKey(new Test("First Resource", "Home"));
resources[new Test("First Resource", "Home")] = 2;
目前返回的是false。我该如何让它返回true?
我已经尝试重载Test类的Equals函数,甚至实现了IComparable并进行了自定义比较。
GetHashCode()
返回一个int
,这意味着可能有2^32个哈希码。字符字符串的可能性远远超过2^32,因此显然会发生冲突。不过没关系,哈希函数的目标是确保散列表的随机输入具有合理平衡的哈希值分布。 - dlevGetHashCode()
缩小了候选列表,然后Equals()
使其落实。 - dlev