私のオブジェクトにGetHashCode(またはオーバーライド)を実装する方法についてコミュニティから聞きたいと思います。私はequalsメソッドをオーバーライドする必要があることを理解しています。私はかなりの時間を実装しています。時には基本メソッドを呼び出すこともあります。私は、オブジェクトが同じ詳細(メンバ)を含んでいる場合、そのオブジェクトが別のインスタンスのオブジェクトと等しくなければならないことを理解します。どのようなクラスのメンバーからハッシュコードを取得する最善の方法は何ですか?GetHashCodeを正しく実装する
答えて
のは、あなたのクラスは次のようになりましょう:
class Frob {
public string Foo { get; set; }
public int Bar { get; set; }
public double FooBar { get; set; }
}
のは、あなたが彼らのFoo
とそのBar
は等しいが、FooBar
問題ではない場合Frob
の2つのインスタンスが等しくなるように等しく定義するとしましょう。
次に、GetHashCode
をFoo
とBar
で定義する必要があります。 1つの方法は、次のようなものです:
基本的には、等価を定義するすべてのフィールドを組み込みたいだけです。 1つの方法は、ちょうど私が行ったように、17で蓄積し、乗算を続けていくことです。それは速く、シンプルで正しいですし、通常は良い分布を与えます。
これは質問そのものだと感じていますが、なぜ23ですか? –
{2,1}と{1,2}を作る素因数が異なります。 –
おそらく、GetHashCodeは2つのオブジェクト**が等しいとみなされるかもしれないということだけを伝えます。まだハッシュ衝突の可能性があります。 – geofftnz
- 1. 値クラスでGetHashCodeを実装する
- 2. GetHashCodeとEqualsはSystem.Attributeで正しく実装されていませんか?
- 3. Zobrist Hashingを正しく実装する
- 4. CountDownTimerを正しく実装する
- 5. 不正防止レイヤーを正しく実装する方法
- 6. 優先キューのヒープ実装を正しく修正する
- 7. GetHashCodeを再実装するクラスから生のハッシュコードを取得するには?
- 8. IEquatableを正しく実装しましたか?私は常にGetHashCodeをオーバーライドする必要がありますか?
- 9. EqualsとGetHashCodeのオーバーライド - 派生クラスのデフォルト実装
- 10. EqualityCompareの実装とGetHashCodeとEqualsのオーバーライドの比較
- 11. libgdxを使ってダイアログボックスを正しく実装する方法
- 12. hook_views_pluginsを正しく実装する方法は?
- 13. デリゲートとプロトコルを正しく実装する
- 14. asp.net mvc3、正しくサイドバーセクションを実装する方法?
- 15. Web APIでIAuthorizationFilterを正しく実装する
- 16. runOnUiThreadを正しく実装する方法
- 17. 。約束を正しく実装する方法
- 18. INotifyPropertyChangedを正しく実装するには? - C#MVVM WinForms
- 19. カスタムAjaxを正しく実装する方法
- 20. 「__repr__」を正しく実装/オーバーロードする方法は?
- 21. MonetDBでAUTO_INCREMENTを正しく実装する方法は?
- 22. C2DMをAndroidに正しく実装する方法は?
- 23. FirebaseRecyclerAdapterでoverride getItem()メソッドを正しく実装する方法
- 24. Mongodb/Mongoose:エクスプレスルートでfindOneAndUpdateを正しく実装する方法
- 25. リポジトリレベルのデータキャッシュを正しく実装する方法
- 26. 固定サイドバーを正しく実装する方法は?
- 27. スイングでJavaでMVCを正しく実装する方法は?
- 28. 正しくmutableCopyWithZoneとcopyWithZoneを実装する方法
- 29. linkedInのログインを正しく実装する方法は?
- 30. メテオjsでpublishとsubscribeを正しく実装する方法
http://stackoverflow.com/a/720282/93922 –
を複製することを検討してください。これを行う前に、自分の記事を読んで理解することをおすすめします。http://blogs.msdn.com/b /ericlippert/archive/2011/02/28/guidelines-and-rules-for-gethashcode.aspx –
ありがとう、私はこれがよくある質問かもしれないと私は理解しています、私はもう少し狩りをしている必要があります。助けてくれてありがとう – Zivka