問題タブ [referenceequals]
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# - IEqualityComparerReferenceEquals を使用する
を使用するデフォルトのIEqualityComparer<T>
実装はありますReferenceEquals
か?
EqualityComparer<T>.Default
を使用する ObjectComparer を使用しますobject.Equals()
。私の場合、オブジェクトは既に を実装していますがIEquatable<T>
、これは無視してオブジェクトの参照のみで比較する必要があります。
c# - GetHashCode() をオーバーライドする型で Object.GetHashCode() を使用する方法
Equals() の実装/オーバーライドと GetHashCode() のオーバーライドにフィールド (Ab と Ac など) を使用して IEquatable<> を実装するクラス A があり、99% の確率ですべてが正常に動作します。クラス A は、すべてインターフェイス D から継承する階層 (クラス B、C) の一部です。それらはすべて辞書 Dictionary にまとめて格納できるため、すべてが独自のデフォルトの Equals()/GetHashCode() を持っている場合に便利です。
ただし、AI の構築中に、Ab と Ac の値を取得するために何らかの作業を行う必要がある場合があります。それが起こっている間、構築中のインスタンスへの参照を保存したいと思います。その場合、A が提供するデフォルトの Equals()/GetHashCode() オーバーライドを使用したくありません。したがって、オブジェクトの Equals()/GetHashCode() の使用を強制するための ReferenceEqualityComparer を実装することを考えていました。 :
問題は、A が Object.GetHashCode() をオーバーライドするため、(A の外部で) A のインスタンスに対して Object.GetHashCode() を呼び出すにはどうすればよいかということです。
もちろん、A が IEquatable<> を実装せず、作成した辞書に常に IEqualityComparer<> を提供する方法もありますが、別の答えを期待しています。
ありがとう
vb.net - 'Is' VB.NETキーワードはObject.ReferenceEqualsと同じですか?
Is
VB.NETキーワードはObject.ReferenceEqualsと同じですか?
java - ==演算子があるのに、なぜequals()メソッドなのですか?
メソッドの実装を見ると、equals()
それは何もしません==
。だから私の質問は==
、同じ仕事をする演算子があるときにこれを別のメソッドとして持つ必要があったのですか?
java - `equals(T value)`では、TはObjectである必要がありますか、それともCityなどのようにすることができますか?
私はそのequals()
方法をよりよく理解しようとしています。私が見たすべての例は、次のようなことをします。
メソッドは都市ではなくオブジェクトを引き受ける必要がありますか?
たとえば、これは許可されていませんか?
c# - Object.Equals は仮想ですが、Object.operator== は C# で使用しませんか?
よくわからない C# の奇妙な「非対称性」に見舞われました。次のコードを参照してください。
.NET の達人には明らかかもしれませんが、2 番目のアサートは失敗します。
Java では、== はここで Object.ReferenceEquals と呼ばれるものの同義語であることを学びました。C# では、Object.operator== は仮想である Object.Equals を使用すると考えていたため、System.String クラスでオーバーライドされています。
誰かが説明できますか? C# で 2 番目のアサートが失敗するのはなぜですか? 私の仮定のどれが悪いですか?
reference - 値型と参照型のコンテキストにおける a==b と a.Equals(b) の違いは何ですか?
私はこの質問に何度も出くわしました.答えは理にかなっていますが、単純なコンソールアプリで自分でチェックしたいと思いました.
}
仮定1:一般的に投稿された返信から私が理解したのは、参照型の場合、 a==b は参照を比較し、 a.Equals(b) は参照される実際の値を比較するということでした。これは、私のプログラムの結果を表示するときに私を失望させたものです.
私のプログラムを参照すると、ケース2の場合-aとcの参照メモリアドレスは異なりますが、それらのフィールドには同じ値が割り当てられます。それでも a.Equals(c) は false を返します。ハッシュコードが異なるため、まだ等しくないからです。仮定 1 に基づいて最初は true を返すと想定していましたが、それらが等しくないことは理にかなっています。しかし、実際には == と .Equals の正確な違いは何でしょうか?
ケース 3 では、'==' 演算子を文字列で使用すると、メモリ アドレスではなく値が比較されます。
ケース 6 では、.Equals メソッドによって比較される値の型が異なりますが、メソッドはそれらが同じ型であると想定しています。したがって、false を返します。
私がまだ理解していないのは、ケース 7 です。この場合、オブジェクトのハッシュコードが同じなのはなぜですか? 長いコードで申し訳ありませんが、事前に感謝します!
java - null と空 ("") Java 文字列の違い
null
と""
(空の文字列)の違いは何ですか?
私はいくつかの簡単なコードを書きました:
どちらのステートメントも を返しfalse
ます。それらの実際の違いを見つけることができないようです。
c# - ReferenceEqualsが文字列で正しく機能しない
この状況ReferenceEquals
でオブジェクトのメソッドの動作が異なるのはなぜですか?
したがって、この状況では結果が得られtrue
ます。場合によっては、参照ではなく文字列の値を比較します。しかし、私が次のようなものを書くとき:
この場合false
、オブジェクトの参照を比較するため、正常に機能し、結果はです。
string - Scalaでのjava.lang.Stringの参照の同等性
文字列は不変ですが、値の同等性と参照の同等性は、Scalaのjava.lang.Stringオブジェクトでは同じではないと予想されます。これは、2つの文字列保持val
が、それらの文字列が同一であっても、参照が等しくないようにする必要があることを意味します。しかし、2.9.1.finalREPLで得られるものは次のとおりです。
結果がなかった理由はfalse
何ですか?List("a")
代わりに同じ実験を行うと"a"
、期待どおりに機能します。このeq
メソッドは、AnyRefでfinalとしてマークされています。またはのために特別に行われたコンパイラの魔法はありますString
かjava.lang.String
?