問題タブ [gethashcode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 列挙型でXOR演算子を使用してGetHashCodeと等式演算子をオーバーロードする
静的分析パッケージの一部である次のクラスがあります。
- オブジェクトは
MetricKey
辞書キーとして使用されます。 Decision
、MetricUnit
&Portfolio
はすべて列挙型です。
辞書のキーマッチングを機能させるには、等式演算子(==)をオーバーライドする必要がありました。http://msdn.microsoft.com/en-us/library/ms173147.aspxのガイダンスを使用しました。ガイダンスでは、実行したGetHashCodeメソッドをオーバーロードする必要があると述べていますが、XOR(^)演算で列挙型を整数にキャストすることの意味を理解していません。私が行ったことは有効ですか、それとも列挙型整数値が重複しているために競合するハッシュコードを取得しますか?:
c# - EqualsとGetHashCodeの最善の戦略は何ですか?
私はドメインモデルを使用していて、これら2つのメソッドを.NETに実装するためのさまざまな方法について考えていました。あなたの好ましい戦略は何ですか?
これは私の現在の実装です:
null - nullフィールドのGetHashCode?
関数内のnullフィールドを処理するにはどうすればよいGetHashCode
ですか?
.net - 「ナイーブ」なものの代わりに「プライムベース」のハッシュコード実装を使用する必要があるのはなぜですか?
GetHashCode関数の素数の実装が推奨されていることを確認しました。たとえば、ここにあります。ただし、次のコード(VBでは申し訳ありません)を使用すると、その実装は「ナイーブ」なxor実装と同じハッシュ密度を提供するように見えます。密度が同じである場合、両方の実装で衝突の確率は同じであると思います。なぜプライムアプローチが好まれるのか、私は何かを見逃していますか?
ハッシュコードがバイトの場合、整数の場合の一般性を失うことはないと思います。
c# - .Net HashSetの一意性の計算は、完全にハッシュコードに基づいていますか?
HashSet<T>
.Netが完全にハッシュコードに基づいているのか、それとも同等性を使用しているのか疑問に思いました。
何百万ものインスタンスをインスタンス化する可能性のある特定のクラスがあり、その時点で一部のハッシュコードが衝突する可能性があります。
このクラスのいくつかのインスタンスを格納するためにHashSetを使用することを検討していて、実際に実行する価値があるかどうか疑問に思っています-要素の一意性がそのハッシュコードでのみ決定される場合、それは実際のアプリケーションでは役に立ちません
MSDNのドキュメントは、このトピックに関してかなり曖昧なようです-どんな啓蒙もいただければ幸いです
equals - IEquatable の実装方法可変フィールドが等価の一部である場合 - GetHashCode の問題
アプリケーションで Entity Framework を使用しています。
IEquatable<T>
インターフェイスのエンティティの部分クラスで実装しました。
私のコードでは、次のように使用しています。
EntityCollection クラスはそのエンティティを HashSet に格納するため、GetHashCode 関数と関係があることに注意してください (デバッガ ビジュアライザで確認しました)。エンティティが ID で比較されるように、ID に依存するようにします。
問題は、保存を押すと、ID が 0 からその db 値に変わることです。したがって、問題は、適切にハッシュされた同等のオブジェクトをどのように取得できるかです。
GetHashCode 関数の何が問題なのか (ID で)、それを機能させるために何を変更すればよいかを教えてください。
どうもありがとう。
c# - c# には、equals と gethashcode() を使用した Java と同じ問題がありますか?
c# には、equals と gethashcode を使用した Java と同じ問題がありますか?
次のような問題: http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html
c# - ディクショナリ キーには、キーに既に含まれているキーは含まれません
次の「存在する」ブール変数の値がfalseになるのはなぜですか???
GetHashCode() & Equals() メソッドを次のようにオーバーライドしました。
c# - NHibernateセット:EqualsとGetHashCodeをオーバーライドする必要がありますか?
NHibernateは初めてです。私はいくつかの多対1および多対多の関連付けに<set...>マッピングを使用しています。これらは、実際にはHashSet <T>によって実装される、タイプICollection<T>のプロパティとして公開されます。
私の質問は、関連するタイプのEqualsとGetHashCodeをオーバーライドして、タイプのデータベースIDと一致させる必要があるかどうかです(実際には、Idプロパティが等しいときにオブジェクトが等しくなるようにします)。それとも、NHibernateは私のためにこれを何らかの方法で処理しますか?
これを行うと、一度に多対多のコレクションに複数の値を挿入したい場合に問題が発生します。これは、新しい要素のIdがGuid.Emptyである可能性があるためです。したがって、同じアイテムと見なされます。
c# - 参照型の値を辞書キーとして使用するには、何をする必要がありますか?
T
コレクションのキーとして使用したいクラスがあるとしDictionary<T,U>
ます。
これらのキーが参照ではなくT
の値に基づくようにするには、何を実装する必要がありますか?T
T
私はそれがただであることを望んでいGetHashCode()
ます。