我知道可以使用 Nullable 值类型来包装值类型并提供存储 null 的能力。 但是是否有技术原因不允许值类型为 null 或原因只是概念上的?
最佳答案
引用类型存储为对象实例的引用(如指针)。
null
表示不指向对象实例的引用。
值类型存储为值本身,没有任何引用。
因此,null
没有意义。值类型——值类型根据定义包含一个值。
Nullable<T>
是一个带有 HasValue
的值类型标志可以是 false
表示没有值(value)。它仍然有一个值(当 HasValue
是 false
时,Value
是 default(T)
),但是 HasValue
标志告诉您忽略该值。
与null
无关, 除了 CLR 自动拆箱 null
盒装值到 Nullable<T>
与 HasValue
设置为 false
.
关于c# - 为什么值类型不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521101/