【发布时间】:2016-09-04 18:25:44
【问题描述】:
我正在尝试以正确的方式进行散列(我承认我通常会有点草率,依赖于自动管理)。我想我已经控制住了,但我不确定这是否真的是完全正确的方法,或者我是否遗漏了一些东西(是的,我已经阅读了很多页,但仍然......)。
在我的课堂上,我设计了这样的东西。我故意省略了Segment 的定义,因为我相信我的方法在不知不觉中是正确的。
public class Compound
{
public Segment PartA { get; set; }
public Segment PartB { get; set; }
...
public int GetHashCode()
{
return PartA.GetHashCode() * PartB.GetHashCode()
}
}
该方法似乎是安全的,因为整数不会溢出,而是环绕最大值。这种方法的优点是对我来说这两个部分实际上都会影响产生的哈希值。
我想知道在计算时是否应该使用乘法或加法(或完全不同的东西)。我真的从这两个部分的哈希中获得了什么吗?我真的说不出来。
【问题讨论】:
-
我会看到this 的答案,这是一种将多个对象散列在一起的好方法。至于为什么,请参阅this answer(也链接在上面)。