これは本当に簡単なようです。
私が持っている場合:
object obj = *get value from somewhere*
if(obj == null){
MessageBox.Show("NULL");
}
デバッグして obj が null であることを確認しても、コードが if ステートメントに入ることはありません。
オブジェクトをnullと比較するとき、何か違うことをしなければなりませんか? (オブジェクトはどのタイプでもかまいませんか?)
さて、コメントはそれを与えています:
わかりました、これを行っているときに、デバッグ モードで変数にカーソルを合わせると値が null であることに気付きましたが、ISNT が機能している場合、値は {null} です... {null} とはどういう意味ですか?
これは、実際には単一の null 参照を含む配列 (またはおそらく別のコレクション型) であることを示唆しています。
object obj = new object[] { null };
の値はnull 参照ではないため、ステートメントの本体には入りobj
ませんif
。
これをどのように処理する必要があるかは、何を達成しようとしているかによって異なります。ただのように静的に型付けする必要 がありますか?obj
object
あなたが必要
if(obj == null){
MessageBox.Show("NULL");
}
変数objではなく型オブジェクトを書きました
アップデート
編集に基づいて(質問をかなり変更します)、コードは確実に機能するはずです。割り当ててみてください
obj = null;
ifステートメントの直前に、それが MessageBox.Show() に入ることを確認します
これにより、 ifが期待どおりに機能することが証明されます。
更新 2
@Jon は、1 つの要素 null を持つ配列を割り当てた可能性が高いことに頭を悩ませました。このように表示される理由は、デバッガーが配列を視覚化しようとしているためです。
たとえば、配列に "Hello" と "World" という 2 つの文字列要素がある場合、デバッガーは次のように表示します。
{"こんにちは世界"}
配列には null という 1 つの要素しかないため、デバッガーはこれを次のように視覚化します。
{ヌル}