我正在C#中爲System.Drawing.Point類實現自定義GetHashCode。我的方法目前無法以下要求:最快的哈希碼生成器.NET
var hashA = MyGetHashCode(new Point(1, 0));
var hashB = MyGetHashCode(new Point(0, 1));
var hashC = MyGetHashCode(new Point(0, 0));
var hashD = MyGetHashCode(new Point(1, 1));
Assert.AreNotEqual(hashA^hashB, hashC^hashD);
要通過這個測試,我敢肯定,使用新SHA256Managed()ComputeHash(currentHash)會做。但是還有其他更快的哈希算法?我知道SHA256是關於安全性的,我不需要它。
你是怎麼想出你的散列函數應該通過該測試的? – mquander 2009-06-08 13:08:44
@ mquander當然似乎很奇怪,但其他一些Equals函數依賴於一個簡單的GetHashCode實現,它依次依賴於我自定義的Point.GetHashCode方法 – 2009-06-08 13:16:25
@mquander這完全是關於不在Equals和GetHashCode中重複代碼,並使它們等價。 – 2009-06-08 13:19:51