問題タブ [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# - なぜfalseを返すのですか?new Person( "james")== new Person( "james")?
私はオーバーライドを持ってGetHashCode
おりEquals
、両方のメソッドは異なるオブジェクトに対して同じ結果を提供しますが、なぜそれでもfalseになるのですか?
c# - DateRange クラスに適した hashCode は何でしょうか
私は次のクラスを持っています
次のような DateRange をキーとする辞書にいくつかの値を格納する必要があります。
クラスのGetHashCode()
メソッドをオーバーライドするにはどうすればよいですか?DateRange
c# - Gethashcode() 関数
C1 と c2 のハッシュコードが同じでないのはなぜですか? コードは「同じ」になりません....(両方のクラスで i=0 )
c# - ValueType.GetHashCode() がそのまま実装されるのはなぜですか?
からValueType.cs
KeyValuePair をディクショナリのキーとして使用していたときに (xml 属性名 (列挙型) とその値 (文字列) を格納していた)、今日これに悩まされ、すべてのフィールドに基づいてハッシュコードが計算されることを期待していました。しかし、実装によれば、キー部分のみを考慮していました。
例 (Linqpad からの c/p):
私が推測する最初の非静的フィールドは、宣言順の最初のフィールドを意味します。これは、何らかの理由でソース内の変数の順序を変更するときに問題を引き起こす可能性があり、それがコードを意味的に変更しないと信じています。
c# - WCFの抽象メソッドサーバー側を維持する方法
すべてのドメインオブジェクトにGetHashCodeを実装するように強制しています。
これらのドメインオブジェクトをWCFを介して公開する場合、次の生成されたサービスをコンパイルするには、更新後の変更が必要です。
GetHashCodeの要件を維持する方法についてのアイデアはありますが、クライアント上のコードの要件を(更新または部分的なクラスとして)削除しますか?
wpf - ContentControlでgetHashCodeとEqaulをオーバーライドするwpf
こんにちは私はContentControlから派生したクラスを持っていて、GetHashCodeとEqualメソッドをオーバーライドできません。エラーが発生します
エラー5は、継承されたメンバー'System.Windows.DependencyObject.GetHashCode()'が封印されているため、オーバーライドできません。このメソッドをオーバーライドする方法はありますか?LINQのUnionメソッドを使用する必要がありますが、通常とは異なる条件のオブジェクトを比較する必要があります。それを行う方法はありますか?
c# - GetHashCodeの同等性
これについて疑問に思ったので、聞いてみようと思います。
表示されるほとんどの場所では、Equalsをオーバーライドするために、メンバーごとの同等性のためにGetHashCodeと同じセマンティックロジックを使用しています...ただし、通常は異なる実装を使用します。
タイプにメンバーごとの等式を実装している場合(たとえば、辞書に格納する場合)、GetHashCodeをオーバーライドしてから、Equalsに対して次のようにします。
c# - Double.GetHashCode アルゴリズムまたはオーバーライド
マネージ コードとアンマネージ コードの両方を実行するアプリケーション プロジェクトがあり、両方のシステムで double 値をハッシュするために同じアルゴリズムを使用する必要があります。そのため、System.Double.GetHashCode() をオーバーライドするか、C++ コードでそのアルゴリズムを使用します。double.gethashcode アルゴリズムが見つからず、関数をオーバーライドすることにしました。しかし、奇妙なエラーが発生しました。
double 型を System.Double に暗黙的に変換することはできません
コードは次のとおりです。
行 2 のコメントを外すと、Cannot implicitly convert type double to System.Double エラーが発生します。1行目を実行してもエラーは発生しませんが、オーバーライドされたコードは機能しません。
多分それは私がしようとしている非常に悪いことです。誰でも double.gethashcode アルゴリズムについて知っているので、同等の C++ コードを記述して正確な int 値を取得できますか?
c# - C# で疑似乱数ジェネレーターをシードする
C# のRandom
クラスのインスタンスのシードが必要ですが、ほとんどの人が現在の時間のティック カウンターを使用していると読みました。ただし、これは 64 ビット値であり、シードは 32 ビット値である必要があります。GetHashCode()
を返すメソッドは、int
そのオブジェクトに適切に分散された値を提供する必要があり、これを使用して、ティック カウントの下位 32 ビットのみを使用することを避けることができると考えました。Int64
ただし、データ型の GetHashCode() については何も見つかりませんでした。
だから、それはあまり重要ではないことはわかっていますが、次のことは私が思うほどうまくいくでしょうか(ランダム性を試行錯誤することはできません)、それとも(int)DateTime.Now.Ticks
シードとして使用するのと同じように機能するのでしょうか? それとも、それはさらに悪いことですか?誰がこれに光を当てることができますか。
編集:なぜシードが必要なのに、Random()
コンストラクターに仕事をさせないのですか? 同じランダム シーケンスに同じシードを使用する他のクライアントにシードを送信する必要があります。
c# - IEqualityComparerでのGetHashCodeの役割は何ですか.NETで?
IEqualityComparerインターフェイスのGetHashCodeメソッドの役割を理解しようとしています。
次の例はMSDNから抜粋したものです。
Equalsメソッドの実装は、2つのBoxオブジェクトを比較するのに十分ではありませんか?ここで、オブジェクトの比較に使用されるルールをフレームワークに通知します。GetHashCodeが必要なのはなぜですか?
ありがとう。
ルシアン