26

GetHashCode()が同じ文字列に対して異なる値を返すのはなぜですか?これを複製する方法を説明することはできませんが、これは悪ふざけではなく、次の2行が2つの別々の時間に私の時計ウィンドウから来たものであると信じてください。

"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode() -1386151123 int
"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode() 1858139950 int

これはどのように起こりますか?

これが役立つかどうかはわかりませんが、VS2010の.NET4.0で実行しており、NServiceBusアプリケーションをデバッグしています。

アップデート:

このスレッドで私が何をしたのかを知りたい場合は、x64モードで実行しているときにx86ハッシュ値を生成できますか?

4

2 に答える 2

23

ドキュメントによると:

2 つの文字列オブジェクトが等しい場合、GetHashCode メソッドは同じ値を返します。ただし、一意の文字列値ごとに一意のハッシュ コード値はありません。異なる文字列が同じハッシュ コードを返す場合があります。

したがって、2 つの呼び出しで異なる結果が得られるようにするには、別の効果が必要です。1 つの理論は、x86 から x64 へ、またはその逆に、呼び出し間でプラットフォームを切り替えたというものです。

于 2010-12-16T22:59:53.790 に答える