c# - 为什么值类型不能为空

标签 c# .net null clr value-type

我知道可以使用 Nullable 值类型来包装值类型并提供存储 null 的能力。 但是是否有技术原因不允许值类型为 null 或原因只是概念上的?

最佳答案

引用类型存储为对象实例的引用(如指针)。
null表示不指向对象实例的引用。

值类型存储为值本身,没有任何引用。
因此,null 没有意义。值类型——值类型根据定义包含一个值。

Nullable<T>是一个带有 HasValue 的值类型标志可以是 false表示没有值(value)。它仍然有一个值(当 HasValuefalse 时,Valuedefault(T) ),但是 HasValue标志告诉您忽略该值。
null无关, 除了 CLR 自动拆箱 null盒装值到 Nullable<T>HasValue设置为 false .

关于c# - 为什么值类型不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521101/

相关文章:

c# - 转换器获取 DataRowView 而不是 DataGridCell

c# - Windows Media Player中的Wav文件使使用C#有时无法正确播放的项目排队

c# - Visual Studio 2010 中的夜间代码指标

c# - 在 C# 中预览 PDF

.net - 无法访问 WCF 中的已处置对象异常

javascript - 如何检查对象是否为空?

c# - 如何处理int类型的session变量中的null

c# - 以编程方式下载并安装 activex (.cab)

android - EditText 一直返回 null?

c# - NetTopologySuite Distance 在 .net Core 3 中返回奇怪的结果