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

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

我尝试了以下几点:

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

当前回答

试试这个

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

其他回答

试试这个

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

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

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

下面这个怎么样:

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

你也可以从c# 7.0开始使用IS操作符:

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

或者在案例中进行区分

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

为了完整起见。

试试这个:

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