为什么HashSet<T>.GetHashCode()
在有相同元素时返回不同的哈希码?
例如:
[Fact]
public void EqualSetsHaveSameHashCodes()
{
var set1 = new HashSet<int>(new [] { 1, 2, 3 } );
var set2 = new HashSet<int>(new [] { 1, 2, 3 } );
Assert.Equal(set1.GetHashCode(), set2.GetHashCode());
}
这个测试失败了。为什么呢?
我怎样才能得到我需要的结果?“相等的集合产生相同的哈希值”
set1
和set2
不相等,因为它们是不同的对象。测试一下;set1.Equals(set2)
返回false
。 - Dour High ArchHashCode
?你的真正潜在问题是什么? - mjwills