可空值类型存储在
c#
中的哪里?栈还是堆?
我有以下代码:
int? num = null;
根据这个答案:
可为空类型是一个由两个字段组成的结构体:bool 和 T。当值为 null 时,bool 为 false,T 具有默认值。当值不为 null 时,bool 为 true。
Value
结构体中的 Nullable<T>
字段设置的。 ^
所以,我可以说
int? num = null
以默认值存储在堆栈中?
这要看情况。如果可为 null 的值是该方法的局部变量 - 它就会卡住。但是,如果可为 null 的值是引用类型的“字段”,则实际上会增加其大小。这意味着它存在于堆中。