我有一段像这样的代码
object o = (object)null;
object oo = null;
他们之间有什么区别?
答案 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