2

Dupe: Null の違い

一生前に、次のものが等しくないことを説明する記事に出くわしました(c#で):

if (o == null) {}
if (null == o) {}

この記事では、より正確なテストが得られるため、後者が好まれたと説明しています。それ以来、私はそのようにコーディングしています。より多くのことを理解したので、正確な調査結果が何であるかを確認するために、記事またはそれに似た別の記事を探していましたが、この件に関するものは何も見つかりません.

考え?違いはありますか?一見ノーと言うでしょう。しかし、IL と C# のコンパイルの内部で何が起こるかは誰にもわかりません。

4

5 に答える 5

9

を入力しないようにするのは古い習慣ですif (o = null)。if (null = o) は構文エラーです。null値がブール値に強制されることはないため、C#では無意味です。

于 2009-01-08T16:11:29.947 に答える
3

後者は、比較の代わりに誤って値を代入する可能性があった C/C++ の時代からの名残りです。C# ではこれを行うことができないため、どちらかまたは両方を使用できます (ただし、前者の方が読みやすいと思います)。

于 2009-01-08T16:13:07.307 に答える
2

C# では違いはありません。これが正しい構文である場合によくあるバグを回避することは、C/C++ 開発者の古い習慣です。

if(o = null)

C# ではコンパイルされませんが、C および C++ ではコンパイルされ、かなり厄介なバグが残ります。そのため、多くの人が慣れています

if(null == o)
于 2009-01-08T16:12:30.273 に答える
0

C# には関係ありません。これは C からのものです。議論については、この質問を参照してください。

于 2009-01-08T16:11:57.917 に答える
0

私は Java を使用しています。また、すべての可換比較のために LHS に定数を使用する習慣があります。

"name".equals(name)

 null == obj

"55".compareTo(numString)

など..不要な NullPointerExceptions を回避するだけです...

于 2009-01-08T16:18:17.953 に答える