我發現我工作的兩個數據類型與代碼庫的散列碼的方法,這我不完全理解他們爲什麼選擇:這個GetHashCode方法中的位移值如何改善散列?
public override int GetHashCode()
{
return x.GetHashCode()^y.GetHashCode() << 2;
}
public override int GetHashCode()
{
return x.GetHashCode()^y.GetHashCode() << 2^z.GetHashCode() >> 2;
}
怎樣位移位操作使這些哈希值好點?
你試圖做任何研究主題/谷歌在以下'C#搜索確實有點移位操作使哈希值的任何better'?我會先從那裏開始 – MethodMan
您通常希望將一個或多個(不是全部)值包含在哈希代碼中,以便您可以創建更分散的哈希代碼。例如,在你的第一個例子中,如果你沒有移動其中的一個值,那麼x = 1,y = 2的哈希碼將與x = 2,y = 1相同。但是你需要一個不同的哈希代碼來表示這些實際上是對象的兩個不同的值。 –