我有一个 API,其中各种类型都有自定义哈希码。这些散列码基于获取相关对象的字符串表示的散列。使用了各种加盐技术,以使哈希码尽可能不发生冲突,并且具有等效字符串表示的不同类型的对象具有不同的哈希码。
显然,由于哈希码是基于字符串的,因此存在一些冲突(无限字符串与 32 位整数的有限范围)。我使用基于字符串表示的散列,因为我需要散列在会话中持续存在,特别是在对象的数据库存储中使用。
今天突然间,我的代码开始为破坏各种事物的对象生成不同的哈希码。它今天早些时候工作,我还没有触及任何涉及哈希码生成的代码。
我知道 .Net 文档允许在 .Net 框架版本之间(以及 32 位和 64 位版本之间)实现哈希码,但我没有更改框架版本,并且最近没有框架更新我记得
任何想法,因为这看起来真的很奇怪?
编辑
哈希码生成如下:
//Compute Hash Code
this._hashcode =
(this._nodetype + this.ToString() + PlainLiteralHashCodeSalt).GetHashCode();