如何将DateTime?转换为DateTime类型?

214

我想将可空的DateTime (DateTime?) 转换为 DateTime,但是我得到了一个错误:

不能隐式地将类型 'System.DateTime?' 转换为 'System.DateTime'。存在一种显式转换 (是否缺少强制转换?)

我尝试了以下代码:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate;
12个回答

0

你也可以使用从C# 7.0开始的IS运算符

DateTime UpdatedTime = (_objHotelPackageOrder.UpdatedDate is DateTime myDate) ? myDate : DateTime.Now;

或者在一个情况分别中

if (_objHotelPackageOrder.UpdatedDate is DateTime UpdatedTime)
{
   ...
}

为了完整性。


0
DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;

4
解释你的建议/答案通常被认为是良好的习惯。仅提供代码的答案可能会出人意料地缺乏信息,即使它们在技术上是正确的也是如此。 - Maximilian Ast
1
@MaximilianAst 是的,你说得对,我会尝试按照你建议的方式实现 :) - Harsh Vyas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接