さまざまなタイプのカスタム ハッシュ コードを持つ API があります。これらのハッシュ コードは、問題のオブジェクトの文字列表現のハッシュの取得に基づいています。可能な限りハッシュ コードが衝突しないように、また、同等の文字列表現を持つ異なるタイプのオブジェクトが異なるハッシュ コードを持つように、さまざまなソルティング手法が使用されます。
明らかに、ハッシュ コードは文字列に基づいているため、いくつかの衝突があります (無限の文字列と 32 ビット整数の制限された範囲)。私はハッシュをセッション間で保持する必要があり、特にオブジェクトのデータベース ストレージで使用するために、文字列表現に基づくハッシュを使用します。
突然、今日私のコードはオブジェクトのさまざまなハッシュ コードを生成し始め、あらゆる種類のものを破壊しています。それは今日の早い段階で機能していましたが、ハッシュ コードの生成に関連するコードには一切触れていません。
.Net のドキュメントでは、.Net フレームワークのバージョン間 (および 32 ビット バージョンと 64 ビット バージョンの間) で変更するハッシュ コードの実装が許可されていることは承知していますが、私はフレームワーク バージョンを変更しておらず、フレームワークの更新も最近ありません。私が覚えているように
これは本当に奇妙に思えるので、何かアイデアはありますか?
編集
ハッシュコードは次のように生成されます。
//Compute Hash Code
this._hashcode =
(this._nodetype + this.ToString() + PlainLiteralHashCodeSalt).GetHashCode();