如何在c#中将对象与null进行比较

Toa*_*ums 1 c# null object

这似乎应该是非常直接的.

如果我有:

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,因此调试器将其显示为

{空值}