我正和同事谈话,并且出现了null的主题.他在幕后告诉我,在.NET中它只是一个非常小的数字.我一直认为对象只是没有指向堆上任何内存的指针,但我不确定.
所以我希望社区可以为我们清理它; P
lep*_*pie 16
它是0.
在ECMA-335规范中从ldnull剪断:
可能会认为ldnull是多余的:为什么不使用ldc.i4.0或ldc.i8.0呢?答案是ldnull提供了一个与大小无关的null - 类似于ldc.i指令,它不存在.但是,即使CIL要包含ldc.i指令,它仍然有利于验证算法保留ldnull指令,因为它使类型跟踪更容易.
当可空类型实例设置为null时,其基础值为零.
更具体地说,可空类型是一种结构,它将底层类型的值与布尔空指示符组合在一起.可空类型的实例具有两个公共只读属性:bool类型的HasValue和可空类型的基础类型的Value.
对于非null实例,HasValue为true,对于null实例,则为false.
因此,当HasValue为true时,Value属性返回包含的值.当HasValue为false时,尝试访问Value属性会引发异常.但是如果你可以访问它,你会发现它包含零.