【发布时间】:2021-03-25 11:47:15
【问题描述】:
我需要一个 Nullable 类型,但如何初始化这样的变量?每当我尝试这样做时,它都会自动转换为普通的 Int32。
Nullable<Int32> nullableInt32 = new Nullable<Int32>(3);
Console.WriteLine(nullableInt32.GetType()); // gives me System.Int32
这是一个错误吗?我如何才能真正初始化 Nullable?
【问题讨论】:
-
(
int? nullableInt32 = 3是一种更快的方式来编写您需要的内容...)。这里有趣的部分是GetType()将它调用的值类型装箱(因为它是在object上定义的非虚拟方法),而Nullable<int>将普通int装箱。所以GetType最终被一个装箱的int调用,因此返回int。这只是GetType的一个恼人的副作用:你正确地初始化了Nullable<int>。