タグ付けされた質問 「equals-operator」

12
演算子==はC#のジェネリック型に適用できませんか?
MSDNの==オペレーターのドキュメントによると、 定義済みの値タイプの場合、等価演算子(==)は、そのオペランドの値が等しい場合はtrueを返し、それ以外の場合はfalseを返します。文字列以外の参照型の場合、2つのオペランドが同じオブジェクトを参照している場合、==はtrueを返します。文字列型の場合、==は文字列の値を比較します。ユーザー定義の値タイプは、==演算子をオーバーロードできます(演算子を参照)。したがって、ユーザー定義の参照型も使用できますが 、既定では==は、定義済みの参照型とユーザー定義の参照型の両方について上記のように動作します。 では、なぜこのコードスニペットはコンパイルに失敗するのでしょうか。 bool Compare<T>(T x, T y) { return x == y; } 演算子 '=='をタイプ 'T'および 'T'のオペランドに適用できないというエラーが表示されます。私が理解している限り、==演算子はすべてのタイプに対して事前定義されているので、なぜだろうか。 編集:ありがとう、みんな。最初はステートメントが参照型のみに関するものであることに気付きませんでした。また、ビットごとの比較はすべての値の型に対して提供されると思っていましたが、これは正しくないことがわかりました。 しかし、参照型を使用している場合、==演算子は定義済みの参照比較を使用するのでしょうか、それとも型が定義されている場合は、演算子のオーバーロードバージョンを使用するのでしょうか。 編集2:試行錯誤の==結果、無制限のジェネリック型を使用する場合、オペレーターは事前定義された参照比較を使用することがわかりました。実際、コンパイラーは、制限された型の引数に対して見つけることができる最良の方法を使用しますが、それ以上は調べません。たとえば、以下のコードはtrue、Test.test<B>(new B(), new B())が呼び出された場合でも、常にを印刷します。 class A { public static bool operator==(A x, A y) { return true; } } class B : A { public static bool operator==(B x, …

7
Java:整数の等しいと==
Java 1.5以降、多くの状況でIntegerとほとんど交換できますint。 ただし、コードに潜在的な欠陥があり、少し驚いた。 次のコード: Integer cdiCt = ...; Integer cdsCt = ...; ... if (cdiCt != null && cdsCt != null && cdiCt != cdsCt) mismatch = true; 値が等しい場合、不一致を誤って設定しているように見えましたが、どのような状況下であるかはわかりません。私はEclipseにブレークポイントを設定し、Integer値が両方とも137であることを確認しました。ブール式を検査したところ、falseであることがわかりましたが、ステップオーバーすると、ミスマッチをtrueに設定していました。 条件を次のように変更します。 if (cdiCt != null && cdsCt != null && !cdiCt.equals(cdsCt)) 問題を修正しました。 なぜこれが起こったのかについて誰かが光を当てることができますか?これまでのところ、自分のPCのローカルホストでの動作のみを確認しました。この特定のケースでは、コードは約20回の比較に成功しましたが、2回失敗しました。問題は一貫して再現可能でした。 それが一般的な問題である場合は、他の環境(開発とテスト)でエラーを引き起こしているはずですが、これまでのところ、このコードスニペットを実行する何百ものテストの後に問題を報告した人はいません。 ==2つのInteger値を比較するために使用することはまだ正当ではありませんか? 以下のすべての良い答えに加えて、次のスタックオーバーフローリンクにはかなりの追加情報があります。実際には元の質問に答えていたはずですが、質問でオートボクシングについて言及しなかったため、選択した提案には表示されませんでした。 コンパイラ/ JVMがオートボクシングを「機能するだけ」にできないのはなぜですか?

3
Pythonの「(1、)== 1」の意味は何ですか?
私はタプル構造をテストしていますが、次の==ような演算子を使用すると奇妙なことがわかりました。 >>> (1,) == 1, Out: (False,) これら2つの式を変数に割り当てると、結果はtrueになります。 >>> a = (1,) >>> b = 1, >>> a==b Out: True この質問は、私の見解では、Pythonタプルの末尾のコンマ構文規則とは異なります。==演算子間の表現のグループを尋ねます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.