You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:05:01