Eric Lippert によるGetHashCode のガイドラインとルールから引用するには:
ルール: GetHashCode のコンシューマは、長期にわたって、またはアプリケーション ドメイン間で安定していることに依存できません。
Name、Address などの多数のフィールドを持つ Customer オブジェクトがあるとします。2 つの異なるプロセスでまったく同じデータを持つ 2 つのオブジェクトを作成した場合、それらは同じハッシュ コードを返す必要はありません。火曜日に 1 つのプロセスでそのようなオブジェクトを作成し、それをシャットダウンして、水曜日にプログラムを再度実行すると、ハッシュ コードが異なる可能性があります。
これは過去に人々を噛んだ。System.String.GetHashCode のドキュメントでは、CLR のバージョンが異なると 2 つの同一の文字列が異なるハッシュ コードを持つ可能性があり、実際にそうであることが具体的に記載されています。文字列ハッシュをデータベースに保存しないでください。それらが永遠に同じであることを期待してはいけません。
では、データベースに格納できる文字列の HashCode を作成する正しい方法は何ですか?
(私が書いたソフトウェアにこのバグを残したのは私が初めてではないことを教えてください!)