3

Nullable 是一个结构。而且我知道不能将结构分配为“空”。那么我们怎样才能将 Nullable 的对象赋值为 null 呢?是什么原因?

4

1 回答 1

10

它实际上不接受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在运行时转换为 a时也会进行类似的检查int?

延伸阅读

于 2013-04-04T12:10:45.250 回答