HashSet<T>.Add
まず、の結果を比較しますGetHashCode
。それらが等しい場合は、を呼び出しますEquals
。
さて、私の理解は、実装するために、オブジェクトのフィールドで何かをしなければならないということGetHashCode
です。簡単な実装例は、オーバーライドされたSystem.Object.GetHashCodeに最適なアルゴリズムは何ですか?にあります。。
ランダムデータで満たされた1.000.000ペアのオブジェクトの両方を比較する私のテストでは、パフォーマンスは2つの間でほぼ同等です。GetHashCode
リンクされた例のように実装され、すべてのフィールドEquals
を呼び出すだけです。Equals
では、なぜ使いすぎGetHashCode
たのEquals
でしょうか。