.Net Hash Codes no longer persistent?

Posted by RobV on Stack Overflow See other posts from Stack Overflow or by RobV
Published on 2009-10-14T10:53:46Z Indexed on 2010/06/14 13:32 UTC
Read the original article Hit count: 190

Filed under:
|
|

I have an API where various types have custom hash codes. These hash codes are based on getting the hash of a string representation of the object in question. Various salting techniques are used so that as far as possible Hash Codes do not collide and that Objects of different types with equivalent string representations have different Hash Codes.

Obviously since the Hash Codes are based on strings there are some collisions (infinite strings vs the limited range of 32 bit integers). I use hashes based on string representations since I need the hashes to persist over sessions and particularly for use in database storage of objects.

Suddenly today my code has started generating different hash codes for Objects which is breaking all kinds of things. It was working earlier today and I haven't touched any of the code involved in Hash Code generation.

I'm aware that the .Net documentation allows for implementation of hash codes between .Net framework versions to change (and between 32 and 64 bit versions) but I haven't changed the framework version and there has been no framework updates recently as far as I can remember

Any ideas because this seems really weird?

Edit

Hash Codes are generated like follows:

//Compute Hash Code
this._hashcode = 
   (this._nodetype + this.ToString() + PlainLiteralHashCodeSalt).GetHashCode();

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET