.netソースをサーフィンしているときに、いくつかのステートメントに出くわしました。
If( null != name)
If( false == check())
上記のステートメントの(name!= null)ステートメントと(Check()== false)ステートメントの違いは何ですか?
誰かが私にこれを明らかにすることができますか?お願いします。
.netソースをサーフィンしているときに、いくつかのステートメントに出くわしました。
If( null != name)
If( false == check())
上記のステートメントの(name!= null)ステートメントと(Check()== false)ステートメントの違いは何ですか?
誰かが私にこれを明らかにすることができますか?お願いします。
これは重複していると思いますが、今は見つかりません。
定数が最初のコードは通常、Cの(古い)バックグラウンドを持つ開発者によって作成されます。ここで、次のように記述できます。
if (NULL == x)
これの代わりに:
if (x == NULL)
次のようなタイプミスをした場合に備えて:
if (x = NULL) // Valid, but doesn't do what you want.
ほとんどの場合、C#では、これを行う必要はありません。ステートメントの条件はにif
変換可能である必要があるためbool
です。
ブール定数と比較する場合、違いが生じます。
if ((Check() = false) // Eek!
...これはただ書く理由の1つです:
if (!Check())
基本的に、変数を最初に置く方が一般的に読みやすくなります。C#では、定数を最初に置く理由は、とにかくほとんど当てはまりません。(現代のCおよびC ++コンパイラーは通常、とにかく警告を出すので、私が知る限り、これらの言語でもそれはもはや素晴らしい考えではありません...)
評価の順序に関しては、左側のオペランドが右側のオペランドの前に評価されるという理論上の違いがあります...ただし、定数であり、副作用がないため、実際の違いはありません。 。null
false
このスタイルにはC/C ++のバックグラウンドが付属していると思います。この演算子は、=
ifステートメント内でも使用でき、割り当てだけでなく比較にも使用できます。
ステートメント
は、他のステートメントif( null != name)
と同じです。if(name != null)
誤って左側に値を割り当てないようにするために、このスタイルのチェックはC /C++で使用されます。
コーディングホラーヨーダ記法をご覧ください
if(4 == foo)のように、if(variable == constant)の代わりにif(constant == variable)を使用します。「青が空なら」や「背が高いなら男」と言っているようなものだからです。
奇妙な逆転は、C / C ++プログラマーによって書かれたように見えます...基本的に、誤って次のように入力した場合、C / C++で:
if(name = null)
それ以外の
if(name == null)
次に、コンパイルされ、呼び出されたときに値がnullに変更されます。この間違いを避けるためのAC/C ++の習慣は、null
/のような定数をfalse
常に左側に使用することです。これは、定数を再割り当てできないため、の=
代わりにを使用するとコンパイラエラーが発生するためです==
。C#ではif(a = null)
、通常、it()はコンパイルされないため、問題にはなりません。
ここでの位置に違いはありません-両側が評価されます。このための慣用的なC#は単純に次のようになります。
if(name != null) ...
if(!check()) ...