問題タブ [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 投票する
1 に答える
171 参照

c# - MSDN コード例: static Object.Equals を呼び出す前に null をチェックするのはなぜですか?

メソッドに関する Microsoft の MSDN ライブラリの記事IEquatable<T>.Equals( http://msdn.microsoft.com/en-us/library/ms131190.aspx ) では、Equals および Equality 演算子をオーバーライドする方法を示す例が示されています。次のようになります。

私の注意は、次の行に引き付けられました。if ((object)person1 == null || ((object)person2) == null) return Object.Equals(person1, person2);

私の理解では、静的な Object.Equals は、そのパラメーターに対して null を自動的にチェックします。呼び出す前に null をもう一度チェックするのはなぜですか? それを行うためのガイドラインはありますか?

次のように簡単に実装します。

または多分これ:

同じドキュメントからのこの引用に基づいて:「オーバーライドする場合、オーバーライドされた実装は、クラスのメソッドObject.Equals(Object)への呼び出しでも呼び出されます」static Equals(System.Object, System.Object)

アップデート:

にエラーの可能性があることがわかりました。次のように表示されpublic bool Equals(Person other)ます。結果は正しいですが、余分なレベルの間接性があります。私はそうあるべきだと信じています。other == null==(object)other == null

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

c++ - 代入演算子を呼び出すと破棄関数がトリガーされるのはなぜですか?

2 次元ポインター bool** マトリックスを持つ Matrix というクラスがあります。

このコードを見てください:

次のようにメイン関数で = 演算子を呼び出しました。

デストラクタは次のようになります。

Xcodeでプログラムを実行すると、次のようになります:

見た目は問題ありませんが、=演算子関数を次のように変更すると:

結果としてこれを取得します:

後者のコードでデストラクタがより早くトリガーされる理由を誰かに説明できますか?! どうすればそれを防ぐことができますか

前もって感謝します

0 投票する
3 に答える
5152 参照

java - 文字列を含む if else ステートメントで Java を比較する

私はJavaコードに非常に慣れていません。これまで実際にC++を使用したことはありません。2 つの文字列変数を比較しようとしていますが、それらが一致する場合は、新しい変数を文字列に設定します。それ以外の場合、新しい変数は null になります。

例えば

しかし、これは試してみるとうまくいかないようで、ロジックは正しいと思います...助けはありますか?

0 投票する
1 に答える
88 参照

javascript - if(window.location == 'x') で == を === に変更すると、ブロックが実行されなくなります

==の代わりに が使用されているコードをチェックしていますが、次の===行を変更しています。

これに:

ブロックが実行されなくなります。

正しいアプローチは何ですか?

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

c# - C# で null を確実にチェックするにはどうすればよいですか?

==演算子とをオーバーロードする場合を含め、C# で null を確実にチェックするにはどうすればよい!=ですか?

次のオプションが利用可能であることを知っています。

  • x != null演算子をオーバーロードする場合は信頼できません。
  • null != x演算子をオーバーロードする場合は信頼できません。
  • (x ?? null) != null型はまだ でMyClassあるため、演算子をオーバーロードする場合は信頼できません。
  • object.ReferenceEquals(x, null)大丈夫なはず。
  • x.Equals(null)動作しません (もちろん、 でメソッドを呼び出しているためx、これは である可能性がありますnull)
  • object o = x; o != nullを使用する必要objectoperator !=あるため、機能するはずです。
  • 他の何か?

では、信頼性、速度、読みやすさの点でどの方法が最適で、最も慣用的な方法はどれでしょうか? マイクロソフトは、ドキュメント/コーディング標準などで何らかの方法を推奨していますか?

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

angularjs - Angular 2 の $scope と splice。1 つを他の $scope と同等にする方法は?

問題はこれです:

戻る:

必要:

なぜこうなった?

更新: 解決策:どこでも使用angular.copy($scope.val) 私のコードが悪い: