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. GetHashCode()evil内でF#のハッシュ関数を使用していますか?
- 5. 共通トレースIDの使用方法は?
- 6. 分散トレースのzipkinでistioを使用すると、x-request-idを返すことはできますか?
- 7. メンバーシップユーザーIDを使用してユーザープロファイルを取得できますか?
- 8. IDを使用してJAXBオブジェクトをシリアライズしますか?私のデータモデルで
- 9. GDBデバッガを使用してオブジェクトID(0xee63d60)でオブジェクトを印刷
- 10. GetHashCodeを使用してユーザーのパスワードを「安全」にする
- 11. カスタムEqualsメソッドおよびGetHashCodeメソッドを使用してオブジェクトをシリアル化するときの循環参照エラー
- 12. アソシエーション:IDまたはオブジェクト参照を使用しますか?
- 13. Salesforceは別のオブジェクトのカスタムフィールドを使用してオブジェクトIDを取得します
- 14. Rubyオブジェクトの上書きID(OpenStructを使用して作成)
- 15. WQLを使用してどのオブジェクトをクエリできますか?
- 16. エンドポイントでセッションIDを使用してプロセスをインポートできます
- 17. nginxロードバランサでトレースIDを設定する
- 18. JavaScript:Booleanオブジェクトをコールバック関数として使用できますか?
- 19. オブジェクトをOOJSの関数として使用できますか?
- 20. LatLngオブジェクトをダブルとして使用できますか?
- 21. SleuthはトレースIDとスパンIDを表示しません
- 22. jqを使用してJSONキー値からオブジェクトIDを作成
- 23. IndexedDBを使用していくつのオブジェクト(列)を使用できますか?
- 24. オブジェクト名を使用して、そのオブジェクトのインスタンスを作成できますか?
- 25. フィクスチャパラメータIDに基づいてpytest.mark.skipifを使用できますか?
- 26. GetHashCode()はMonoTouch for NSObject派生オブジェクトで正しく動作しますか?
- 27. クラスがEqualsとGetHashCodeを実装するときに、C#ディクショナリのキーとしてオブジェクト参照をどのように使用しますか?
- 28. NHibernateは、非複合IDとGetHashCodeメソッド
- 29. オブジェクトIDを使用したJDOクエリ
- 30. ngRepeatを使用して、certan idを持つangular1オブジェクトをフィルタリングします。
具体的な説明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 –