Nullable是一个结构体。我知道结构体不能被赋值为“null”。那么我们如何将Nullable对象赋值为null?原因是什么?
Nullable是一个结构体。我知道结构体不能被赋值为“null”。那么我们如何将Nullable对象赋值为null?原因是什么?
它实际上不接受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?
时,也会进行类似的检查。
更多阅读
DateTime? test = null
这样的id。 - MarcinJuraszekEquals
方法。但是 int? test = null
实际上更像是编译器的技巧。我在我的答案中包含了更详细信息的链接。 - p.s.w.g
null
时,可能会发生一些奇妙的事情- 你无法在C#中为自己的类编写的奇迹。 - Damien_The_Unbeliever