GetHashCode()
はどのような用途ですか? GetHashCode()
を使用してオブジェクトIDをトレースできますか?もしそうなら、あなたは例を挙げることができますか?GetHashCodeを使用してオブジェクトIDをトレースできますか?
答えて
ハッシュコードは同一性についてではなく、ほぼ同等です。実際には、あなたは彼らがおよそ非平等だと言うことができる:2つのオブジェクトは異なるハッシュコードをお持ちの場合は
- 2つのオブジェクトが同じハッシュコードを持っている場合は、それらが
- 等しくすることができる、彼らは」 再ない等しい
ハッシュコード固有のものではない、また彼らは(2つのオブジェクトが同じハッシュを持っているが、まだ等しくない場合もある)平等を保証します。
その用途については:彼らはほとんど常に迅速実際通常のキー/値のマップでは平等、(例えばDictionary<TKey, TValue>
)またはセット(例えばHashSet<T>
)のために、テストにおそらく同じオブジェクトを選択するために使用しています。
いいえ、HashCodeは一意ではありません。しかし、すでにオブジェクトへの参照があり、object.ReferenceEquals()
を使用して身元を追跡するのに最適です。
+1あなたの言葉が少し不明な場合でも、あなたのポイントはまだそこにあります。 – ChaosPandion
'=='はオーバーロードすることができるので、参照の等価性をテストする正しい方法は 'object.ReferenceEquals()'メソッドです。 –
ありがとうMartinho Fernandesが具体的に – user160677
値自体は、ハッシュテーブルなどのハッシュアルゴリズムで使用されます。デフォルトの実装では
、GetHasCodeは.NETオブジェクトをそのまま使用してはならないために、あなたに
クラスを所有するため、オブジェクトの一意性を保証するものではありません、一般的に作成するために、GetHashCodeメソッドをオーバーライドすることをお勧めですあなたのオブジェクトの一意の値。
ハッシュを必要とするアルゴリズム\データ構造(ハッシュテーブルなど)に使用されます。同じハッシュを持つ2つのオブジェクトが必ずしも等しいわけではないので、ハッシュコードはオブジェクトアイデンティティを追跡するために単独で使用することはできません。しかし、2つの等しいオブジェクトが同じハッシュコードを持つ必要があります(C#は、他のオブジェクトを上書きせずにオーバーライドすると警告を出します)。
- 1. 別のフィールドでFactoryGirlオブジェクトIDを使用していますか?
- 2. Firefoxを使用してJSをどのようにトレースできますか?
- 3. GetHashCodeを使用してEqualsで等しいかどうかをテストする
- 4. メンバーシップユーザーIDを使用してユーザープロファイルを取得できますか?
- 5. GDBデバッガを使用してオブジェクトID(0xee63d60)でオブジェクトを印刷
- 6. IDを使用してJAXBオブジェクトをシリアライズしますか?私のデータモデルで
- 7. カスタムEqualsメソッドおよびGetHashCodeメソッドを使用してオブジェクトをシリアル化するときの循環参照エラー
- 8. Rubyオブジェクトの上書きID(OpenStructを使用して作成)
- 9. GetHashCodeを使用してユーザーのパスワードを「安全」にする
- 10. アソシエーション:IDまたはオブジェクト参照を使用しますか?
- 11. WQLを使用してどのオブジェクトをクエリできますか?
- 12. nginxロードバランサでトレースIDを設定する
- 13. フィクスチャパラメータIDに基づいてpytest.mark.skipifを使用できますか?
- 14. オブジェクトIDを使用したJDOクエリ
- 15. jqueryを使用してjavascriptオブジェクトを保存し、データベースからIDを渡す
- 16. オブジェクトではなくオブジェクトの名前を文字列として使用してオブジェクトにアクセスできますか?
- 17. LINQを使用して連絡先のオーナーIDを更新できますか?
- 18. hibernate hbmでBigDecimalをid型として使用できますか?
- 19. GetHashCode()はMonoTouch for NSObject派生オブジェクトで正しく動作しますか?
- 20. ngForディレクティブを使用して親オブジェクトに子オブジェクトIDを渡す方法
- 21. NHibernateは、非複合IDとGetHashCodeメソッド
- 22. PropertyGridをオブジェクトなしで使用できますか?
- 23. JQuery - fadeInではなくidを使用していますか?
- 24. .NETオブジェクトを使用してスタンドアロンアプリケーションでCrystal Reportを駆動できますか?
- 25. アンドロイドアプリでユーザーIDとしてメールIDを使用することはできますか?
- 26. WCFを使用してデータをトレースする
- 27. MySql-Proxyを使用してMySqlクエリをトレースする方法は?
- 28. ドラッグアンドドロップを使用してIDを判別しますか?
- 29. アノテーションを使用したトレースの実行
- 30. Bean id属性内でSpring ELを使用できますか?
具体的な説明Jon。 – user160677
HashCodeはシステムによって生成されますか?乱数のようにランダムな値を返しますか? – user160677
デフォルトの 'GetHashCode'実装は、ランタイムによって使用される何らかの種類の内部オブジェクト識別子を返します。しかし 'GetHashCode'は仮想なので、あなたが気に入ったものを返すようにオーバーライドすることができます。あなたがそれを上書きする必要があるときにこれらの2つの質問を確認してください:http://stackoverflow.com/questions/263400/what-is-the-best-algorithm-for-an-overridden-system-object-gethashcode and http:// stackoverflow .com/questions/873654/overriding-gethashcode-for-mutable-objects-c –