在C#中,可为空值类型赋值null是否等价于new Nullable<T>?
关于可为空值类型初始化的等价性问题
是的,int? num = null完全等价于new Nullable<int>(),且它的Value字段会被设置为int的默认值0,原因如下:
- 可为空类型
Nullable<T>是包含两个字段的结构体:一个布尔字段(用于标记是否存在有效值),一个T类型字段存储实际值。 - 当将
null赋值给可为空值类型时,布尔字段会被设为false,同时T类型字段会被赋予对应值类型的默认值——对于int来说就是0。 new Nullable<int>()会创建一个默认初始化的结构体实例,此时布尔字段为false,Value字段同样是int的默认值0,和int? num = null的初始化效果完全一致。
内容的提问来源于stack exchange,提问作者Farhad Zamani
相关产品推荐
相关产品推荐

