为什么Nullable结构体允许'null'

本文关键字:null 结构体 Nullable 为什么 | 更新日期: 2023-09-27 18:07:26

Nullable是一个结构体。我知道结构不能被分配'null'。如何将Nullable的对象赋值为空呢?原因是什么?

为什么Nullable<T>结构体允许'null'

实际上不接受null的值;它只是有语法糖,允许它null一样。该类型实际上看起来有点像这样:

struct Nullable<T>
{
    private bool hasValue;
    private T value;
}

初始化hasValue == falsevalue == default(T)时。

当你编写像

这样的代码时
int? i = null;

c#编译器实际上在幕后做这个:

Nullable<T> i = new Nullable<T>();

在运行时将null转换为int?时也会进行类似的检查。

进一步阅读

  • 为什么可以将" null "赋值给可空类型