問題 §
.NET Core環境下で同じ文字列に対するGetHashCodeの結果が実行するごとに異なる。
デフォルトの.NET Framework環境下では同じ数値が戻ってくる。(が、設定では同じように変化する可能性がある模様)
原因 §
仕様。
(RandomizedStringHashAlgorithmによってセキュリティ的な安全性が向上すると主張しているようだが非互換変更である)
解決 §
- もし、.NET Frameworkアプリの場合、app.config内に<UseRandomizedStringHashAlgorithm>要素があればこの設定を変更して RandomizedStringHashAlgorithmをオフにする
- .NET Coreは使用しない。.NET Frameworkを使う (そして、RandomizedStringHashAlgorithmはオンにしない。デフォルトではオフである)
- システムが提供するGetHashCodeが使わないで相当品を書いてそれを使う (それで済む場合に限る)
- 呪いの藁人形にRandomizedStringHashAlgorithmと書いた紙を貼って釘を打つ (ただし、結果は保証されない)