为什么Nullable <t>,struct,允许'null'</t>

时间:2013-04-04 12:05:41

标签: c#

Nullable是一个结构。我知道结构不能被指定为“空”。那么我们如何才能将Nullable的对象赋给null呢?是什么原因?

1 个答案:

答案 0 :(得分:6)

它实际上不接受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?时也会进行类似的检查。

进一步阅读