1

これは本当に簡単なようです。

私が持っている場合:

object obj = *get value from somewhere*

if(obj == null){
    MessageBox.Show("NULL");
}

デバッグして obj が null であることを確認しても、コードが if ステートメントに入ることはありません。

オブジェクトをnullと比較するとき、何か違うことをしなければなりませんか? (オブジェクトはどのタイプでもかまいませんか?)

4

2 に答える 2

13

さて、コメントはそれを与えています:

わかりました、これを行っているときに、デバッグ モードで変数にカーソルを合わせると値が null であることに気付きましたが、ISNT が機能している場合、値は {null} です... {null} とはどういう意味ですか?

これは、実際には単一の null 参照を含む配列 (またはおそらく別のコレクション型) であることを示唆しています。

object obj = new object[] { null };

の値はnull 参照ではないため、ステートメントの本体には入りobjませif

これをどのように処理する必要があるかは、何を達成しようとしているかによって異なります。ただのように静的に型付けする必要 がありますか?objobject

于 2012-07-26T20:17:04.203 に答える
10

あなたが必要

if(obj == null){
    MessageBox.Show("NULL");
}

変数objではなく型オブジェクトを書きました

アップデート

編集に基づいて(質問をかなり変更します)、コードは確実に機能するはずです。割り当ててみてください

obj = null;

ifステートメントの直前に、それが MessageBox.Show() に入ることを確認します

これにより、 ifが期待どおりに機能することが証明されます。

更新 2

@Jon は、1 つの要素 null を持つ配列を割り当てた可能性が高いことに頭を悩ませました。このように表示される理由は、デバッガーが配列を視覚化しようとしているためです。

たとえば、配列に "Hello" と "World" という 2 つの文字列要素がある場合、デバッガーは次のように表示します。

{"こんにちは世界"}

配列には null という 1 つの要素しかないため、デバッガーはこれを次のように視覚化します。

{ヌル}

于 2012-07-26T20:10:39.020 に答える