Nullable是一个结构。我知道结构不能被指定为“空”。那么我们如何才能将Nullable的对象赋给null呢?是什么原因?
答案 0 :(得分:6)
它实际上不接受null
的值;它只是具有语法糖,允许它行动就像null
一样。这种类型看起来有点像这样:
struct Nullable<T>
{
private bool hasValue;
private T value;
}
因此,当它初始化为hasValue == false
和value == default(T)
时。
编写
之类的代码时int? i = null;
C#编译器实际上是在幕后执行此操作:
Nullable<T> i = new Nullable<T>();
在运行时将null
投射到int?
时也会进行类似的检查。
进一步阅读