問題タブ [equals-operator]

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.

0 投票する
2 に答える
244 参照

c# - == の動作をインターフェイス参照に対して定義できますか?

インターフェイスが IEquatable を継承する場合、実装クラスは Equals メソッドの動作を定義できます。== 操作の動作を定義することは可能ですか?

値を比較して、2 つの IFoo 参照が等しいことを確認するには、次のようにします。

if (X == Y)Foo で Equals メソッドを使用することは可能ですか?

0 投票する
5 に答える
873 参照

c++ - パラメータが非定数参照である演算子==

私はこの投稿、私はこれを見ました:


続行する前に、これは非常に重要です。

  • 私は誰のコーディング能力にも疑問を抱いていません。
  • なぜ誰かが比較で非定数参照を必要とするのか疑問に思っています。
  • その質問 のポスターはそのコードを書いていませんでした。

これは念のためでした。これも重要です:

  • 両方を追加/*const*/し、コードを再フォーマットしました。

ここで、トピックに戻ります。

by-ref引数を変更できる等式演算子の適切な使用法は考えられません。あなたは?

0 投票する
13 に答える
125652 参照

c# - 演算子==をC#のジェネリック型に適用できませんか?

MSDN==のオペレーターのドキュメントによると、

事前定義された値型の場合、等価演算子(==)は、オペランドの値が等しい場合はtrueを返し、そうでない場合はfalseを返します。文字列以外の参照型の場合、2つのオペランドが同じオブジェクトを参照している場合、==はtrueを返します。文字列タイプの場合、==は文字列の値を比較します。ユーザー定義の値型は、==演算子をオーバーロードする可能性があります(演算子を参照)。したがって、ユーザー定義の参照型も可能ですが 、デフォルトでは、==は、事前定義された参照型とユーザー定義の参照型の両方について上記のように動作します。

では、なぜこのコードスニペットはコンパイルに失敗するのでしょうか。

エラー演算子'=='はタイプ'T'および'T'のオペランドには適用できません。私が理解している限り、==演算子はすべてのタイプに対して事前定義されているので、なぜだろうか?

編集:ありがとう、みんな。最初は、ステートメントが参照型のみに関するものであることに気づきませんでした。また、すべての値型に対してビットごとの比較が提供されていると思いましたが、これは正しくないことがわかりました。

しかし、参照型を使用している場合、==演算子は事前定義された参照比較を使用しますか、それとも型が定義されている場合はオーバーロードされたバージョンの演算子を使用しますか?

編集2:試行錯誤の==結果、無制限のジェネリック型を使用する場合、オペレーターは事前定義された参照比較を使用することがわかりました。実際、コンパイラーは、制限された型の引数に対して見つけることができる最良の方法を使用しますが、それ以上探すことはありません。たとえば、以下のコードは、が呼び出されtrueた場合でも常に出力されます。Test.test<B>(new B(), new B())

0 投票する
4 に答える
491 参照

c# - operator== をオーバーロードした後、2 つの変数が同じオブジェクトを指しているかどうかを比較する方法は?

比較演算子のオーバーロード、2 つの変数が同じオブジェクト (値ではない) を指している場合の比較方法

0 投票する
2 に答える
2301 参照

c# - IEntity とダウンキャストを実装するクラスに operator == 比較を許可する方法はありますか?

基本的にここに問題があります。システム内のすべてのエンティティは、タイプとid.

かなり標準的なシナリオ。すべてのエンティティには Id があるため、すべてのエンティティのインターフェイスを定義します。

そして、私が作成するエンティティの作成を簡素化するために:

Customer と Product は次のようなものです

ハンキードーリーだと思います。私がしなければならないことは、各エンティティで Equals をオーバーライドすることだけだと思います (私が非常に賢い場合は、 で一度だけオーバーライドすることもできますBaseEntity)。

だから今、私は自分のテスト範囲を拡大しており、それほど単純ではないことがわかりました! まず、ダウンキャストしてオーバーライドIEntityを使用==する場合は使用されません。BaseEntity<>

それで、解決策は何ですか?他にできることはありますか?そうでない場合、これは非常に面倒です。

更新 1私のテストに何か問題があるように思われます - むしろ、ジェネリックの比較に問題があります。これをチェックしてください:

何が起きてる?これは私が恐れていたほど大きな問題ではありませんが、それでも非常に厄介で、言語の動作が完全に直観的ではありません。

更新 2ああ、わかりました。ジェネリックIEntityは何らかの理由で暗黙的にダウンキャストされます。これは直観的ではなく、ジェネリック メソッドまたはクラス内で発生するすべてのことを比較する必要があることを覚えておく必要があるため、ドメインの消費者にとって問題になる可能性があることを支持します。Equals()

0 投票する
6 に答える
5720 参照

c++ - 演算子 == での C++ テンプレート クラス エラー

エラー:
エラー C2678: バイナリ '==' : 型 'const entry' の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)

関数:

indexList.h
indexList.cpp

これはオーバーロードされた演算子であると思われますか? テンプレートクラスであるため、エラーを理解しているかどうかわかりませんか?

解決策 - クラスのオーバーロード関数が const として宣言されるようになりました:

0 投票する
6 に答える
1432 参照

c# - C#==演算子は詳細に何をしますか?

C#では、2つのオブジェクトで「==」演算子と比較すると、バックグラウンドで正確に何が起こりますか?アドレスを比較するだけですか?または、Equals()やCompareTo()のようなものですか?

PS:Javaの "=="演算子はどうですか?同じように動作しますか?

0 投票する
5 に答える
10543 参照

c# - C#の暗黙的な変換と==演算子

コンテキストのコード:

異なるタイプのインスタンスで==演算子を使用することは可能ですか?暗黙的に別のインスタンスに変換できますか?私は何を取りこぼしたか?

編集:
タイプが同じ呼び出し==でなければならない場合、なぜ

動作しますか?

0 投票する
9 に答える
781 参照

.net - Equals メソッドをオーバーライドする場合、== および != 演算子をオーバーライドする必要がありますか? (。ネット)

それともそうすることをお勧めしますか?なんで?

0 投票する
8 に答える
336 参照

c# - 等価比較でヌルを扱う方法は?

等値比較子を実装する必要がある場合

作ろうかな

間違い?

そして何について

それも偽であるべきですか?

更新人々は、この質問の背後にある理由を疑問視しています。!= と == は常に反対であると想定されています。しかし、上記のすべての比較が false になるようにメソッドを実装すると、== 演算子と != 演算子が同じ結果になる場合があります。したがって、!= が true を返すか false を返すかはジレンマです。