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

C#合并datetime变量时Nullable<DateTime>无AddDays定义如何解决

报错原因与解决方案

报错原因

你遇到的报错是因为(dgFUList.SelectedItem as SelOutOrderInfo_OUT).NEXT_DAY的类型是System.Nullable<DateTime>(简写为DateTime?可空日期类型),而非原生DateTime类型。可空值类型本身没有定义AddDays方法,只有其内部包裹的DateTime有效值才支持调用AddDays方法。

解决方案

根据业务场景可选择以下两种处理方式:

场景1:可确定NEXT_DAY一定不会为null

直接调用可空类型的Value属性获取内部的DateTime值即可,修改后代码如下:

Int32 addDay = Convert.ToInt32((mcnon.model.SelectMCCodeAskOutObj as SelectMCCodeAsk_OUT).PRIORITY);
this.dp_RST.SelectedDate = (dgFUList.SelectedItem as SelOutOrderInfo_OUT).NEXT_DAY.Value.AddDays(addDay);

场景2:NEXT_DAY可能存在空值

需要先做空值判断,避免触发空值引用异常,可自定义空值兜底逻辑,示例代码如下:

Int32 addDay = Convert.ToInt32((mcnon.model.SelectMCCodeAskOutObj as SelectMCCodeAsk_OUT).PRIORITY);
var nextDay = (dgFUList.SelectedItem as SelOutOrderInfo_OUT).NEXT_DAY;
// 空值时可根据业务需求替换为其他默认日期,示例用系统当前日期兜底
this.dp_RST.SelectedDate = nextDay.HasValue 
    ? nextDay.Value.AddDays(addDay) 
    : DateTime.Now.AddDays(addDay);

也可以用空合并运算符简化写法:

this.dp_RST.SelectedDate = (nextDay ?? DateTime.Now).AddDays(addDay);

额外注意

如果dgFUList.SelectedItem as SelOutOrderInfo_OUT也可能为null,建议提前对该对象做非空判断,避免触发空引用异常。

内容的提问来源于stack exchange,提问作者matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:54:05