問題タブ [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.
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
c++ - 代入演算子を呼び出すと破棄関数がトリガーされるのはなぜですか?
2 次元ポインター bool** マトリックスを持つ Matrix というクラスがあります。
このコードを見てください:
次のようにメイン関数で = 演算子を呼び出しました。
デストラクタは次のようになります。
Xcodeでプログラムを実行すると、次のようになります:
見た目は問題ありませんが、=演算子関数を次のように変更すると:
結果としてこれを取得します:
後者のコードでデストラクタがより早くトリガーされる理由を誰かに説明できますか?! どうすればそれを防ぐことができますか
前もって感謝します
java - 文字列を含む if else ステートメントで Java を比較する
私はJavaコードに非常に慣れていません。これまで実際にC++を使用したことはありません。2 つの文字列変数を比較しようとしていますが、それらが一致する場合は、新しい変数を文字列に設定します。それ以外の場合、新しい変数は null になります。
例えば
しかし、これは試してみるとうまくいかないようで、ロジックは正しいと思います...助けはありますか?
javascript - if(window.location == 'x') で == を === に変更すると、ブロックが実行されなくなります
==
の代わりに が使用されているコードをチェックしていますが、次の===
行を変更しています。
これに:
ブロックが実行されなくなります。
正しいアプローチは何ですか?
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
を使用する必要object
がoperator !=
あるため、機能するはずです。- 他の何か?
では、信頼性、速度、読みやすさの点でどの方法が最適で、最も慣用的な方法はどれでしょうか? マイクロソフトは、ドキュメント/コーディング標準などで何らかの方法を推奨していますか?
angularjs - Angular 2 の $scope と splice。1 つを他の $scope と同等にする方法は?
問題はこれです:
戻る:
必要:
なぜこうなった?
更新:
解決策:どこでも使用angular.copy($scope.val)
私のコードが悪い:
対