我正在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