你如何在对象上实现GetHashCode()?

重复:重写的System.Object.GetHashCode的最佳算法是什么?


如果你写了一个包含各种数据成员的对象,你如何智能地实现GetHashCode()?

一位开发人员告诉我他只是XOR(^运算符)相关数据字段的散列,但我不相信这是一个“最佳实践”实现。

如果我有自己的方式,将会有函数Object.CombineHashes(Object [])和/或Object.CombineHashes(int [])来帮助智能地构建复杂对象的散列。

你会如何编写这些功能?


我通过将它们与管道连接在一起,然后获取该代码的hascode,对一堆成员做了一个快速而肮脏的实现:

(Member1.ToString() + "|" + Member2.ToString()).GetHasCode();

就我而言,我知道我不会在会员中拥有管道,所以我知道结果会非常好。

实际上,在我的情况下,我为了调试目的实现了ToString,所以我只是使用了:

this.ToString().GetHashCode();

Xors是我经常看到的另一种方法。

链接地址: http://www.djcxy.com/p/39759.html

上一篇: How do you implement GetHashCode() on objects?

下一篇: Why is the xor operator used in computing hash code?