这似乎应该是非常直接的.
如果我有:
object obj = *get value from somewhere*
if(obj == null){
MessageBox.Show("NULL");
}
Run Code Online (Sandbox Code Playgroud)
即使我调试并看到obj为null,代码也永远不会进入if语句.
在将对象与null进行比较时,您是否做了不同的事情?(因为一个对象可以是任何类型?)
Jon*_*eet 13
好的,评论是放弃它:
好吧,在这样做时,我注意到当我在调试模式中将鼠标悬停在变量上时,该值为null,但是当ISNT工作时,值为{null} ... {null}是什么意思?
这表明它实际上是一个包含单个空引用的数组(或可能是另一个集合类型),例如
object obj = new object[] { null };
Run Code Online (Sandbox Code Playgroud)
的值obj是不是空引用,因此它不会进入体内if声明.
你应该如何处理这取决于你想要达到的目标.你真的需要 obj静态打字object吗?
Eri*_* J. 10
你需要
if(obj == null){
MessageBox.Show("NULL");
}
Run Code Online (Sandbox Code Playgroud)
您编写了类型对象而不是变量obj
UPDATE
根据你的编辑(这会改变很多问题),你的代码肯定会起作用.尝试分配
obj = null;
Run Code Online (Sandbox Code Playgroud)
在你的if语句之前,看到它进入MessageBox.Show()
这将证明if确实按预期工作.
更新2
@Jon点击它,你可能已经分配了一个带有一个元素的数组,null.它以这种方式显示的原因是调试器正在尝试可视化数组.
如果数组有例如调试器将显示的两个字符串元素"Hello"和"World"
{"你好,世界"}
由于数组只有一个元素null,因此调试器将其显示为
{空值}