(对象)null和null之间的差异

时间:2014-08-11 13:40:34

标签: c#-4.0

我有一段像这样的代码

object o = (object)null;

object oo = null;

他们之间有什么区别?

1 个答案:

答案 0 :(得分:1)

没有区别。

表达式null与任何特定类型无关。它的实际类型是通过它的使用方式推断出来的。

声明:

object oo = null;

您正在将null表达式分配给object类型的变量,因此它被推断为null类型的值object

声明:

object o = (object)null;

显式将表达式null强制转换为object并分配给object类型的变量。总的来说,(object)null具有类型对象。编译器不会推断任何内容,因为所有内容都是明确知道的。

在这两种情况下,它们的行为完全相同,因为我们知道表达式必须是什么类型。但是,如果我们不知道类型是什么,就会导致错误。

例如,使用var,其中类型必须由编译器推断。

var o = null; // error
var oo = (object)null; // ok