コードインスペクション:オーバーライドされた GetHashCode が基底の 'オブジェクト.GetHashCode()' を呼び出します。
.NET では、 GetHashCode() は組み込みクラスで使用され、コレクション内のオブジェクトを効率的に検索します。 GetHashCode() をオーバーライドする場合、通常は、主にその等価性が基本 Object 等価性と同じでない場合に、特定のオブジェクトに適したより優れたハッシュ関数を提供することが目的です。
オーバーライドで base.GetHashCode() を呼び出すことはできますが、基本実装では派生クラスの特定の状態とメンバー変数を認識しないため、 通常は役に立ちません。 カスタムオブジェクトに意味のある、適切に分散されたハッシュコードが提供されない可能性があります。
GetHashCode() をオーバーライドした場合、オブジェクトの等価性セマンティクスを変更していることを示すシグナルなので、基本クラスの GetHashCode() に委譲しないでください。 代わりに、オブジェクトの内部状態に基づいてハッシュコードを計算する必要があります。
また、.NET では非常に重要なルールとして、 GetHashCode() をオーバーライドする場合は、 Equals() もオーバーライドする必要があり、それらは一貫していなければならない、というものがあります。 Equals() で 2 つのオブジェクトが同じであると判断された場合、 GetHashCode() はそれらに対して同じハッシュコードを返す必要があります。
2026 年 6 月 12 日