Csharp/C#教程:Nullable DateTimes和AddDays()扩展名分享


Nullable DateTimes和AddDays()扩展名

我有一个DateTime变量,可以是null或Datetime。 我认为一个可以为空的DateTime类型可以工作,但我收到一个错误,告诉我说

Nullable没有AddDays的定义

。 有什么办法可以解决这个错误吗?

 DateTime? lastInvite = (DateTime?)Session["LastInviteSent"]; if ((string)Session["InviteNudgeFlag"] == "False" && ((lastInvite == null && DateTime.Now >= AcctCreation.AddDays(7)) || (int)Session["InviteCount"] > 0 && DateTime.Now >= lastInvite.AddDays(7))) { // Non important code here } 

您应该考虑尝试使您的逻辑更具可读性:

 var inviteNudgeFlag = bool.Parse((string) Session["InviteNudgeFlag"]); if(!inviteNudgeFlag) { return; } var lastInvite = (DateTime?) Session["LastInviteSent"]; var inviteCount = (int) Session["InviteCount"]; var numOfDays = 7; var now = DateTime.Now; var weekSinceLastInvite = lastInvite.HasValue ? now >= lastInvite.Value.AddDays(numOfDays) : now >= AcctCreation.AddDays(numOfDays); var hasInvites = !lastInvite.HasValue || inviteCount > 0; var canInvite = hasInvites && weekSinceLastInvite; if(!canInvite) { return; } 

您需要浏览“价值”属性:

 lastInvite.Value.AddDays(7) 

请注意,如果DateTime实际为null,则会抛出exception。 幸运的是,您可以使用另一个属性来测试“HasValue”。

 if (lastInvite.HasValue){ /* code */ } 

有多种方法可以解决此错误。

  1. 使用Convert.ToDateTime()方法处理null datetime值。

    Convert.ToDateTime(lastInvite).AddDays(7);

  2. 使用Value属性

    lastInvite.Value.AddDays(7)

  3. 使用GetValueOrDefault()方法

    lastInvite.GetValueOrDefault()。AddDays(7)

如果你查看Nullable类型的文档 ,你会发现它只有几个成员。 如果Nullable容器有值,则Value成员将获取T inside。 Nullable不会从它包装的T类型中借用任何成员。

上述就是C#学习教程:Nullable DateTimes和AddDays()扩展名分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

www.ctvol.com true Article Csharp/C#教程:Nullable DateTimes和AddDays()扩展名分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1001675.html

(0)
上一篇 2021年12月27日 下午2:46
下一篇 2021年12月27日 下午2:47

精彩推荐