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

不能隐式转换类型` System.DateTime?” “System.DateTime”。存在显式转换(是否缺少 演员?)

我尝试了以下几点:

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

当前回答

你也可以尝试Nullable(T)属性:

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

其他回答

你可以使用简单的类型转换:

DateTime dtValue = (DateTime) dtNullAbleSource;

正如Leandro Tupone所说,你必须检查之前的var是否为空

您希望使用空合并操作符,该操作符正是为此目的而设计的。

使用它,您最终会得到以下代码。

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

下面是我在演示器中使用的一个片段,该演示器用可空日期/时间填充视图

memDateLogin = m.memDateLogin ?? DateTime.MinValue

试试这个

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

你也可以尝试Nullable(T)属性:

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