Answers:
您想使用null-coalescing运算符,正是出于这个目的而设计的。
使用它,您最终得到这段代码。
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;
试试这个
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;
您需要调用可为空的DateTime 的Value属性。这将返回一个DateTime。
假如说 UpdatedDate
是DateTime?
,那么这应该工作:
DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;
为了使代码更易于阅读,您可以使用 HasValue属性代替null
检查:
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue
? _objHotelPackageOrder.UpdatedDate.Value
: DateTime.Now;
然后可以使它更加简洁:
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;
这是我在Presenter中使用的片段,其中使用可空的日期/时间填充视图
memDateLogin = m.memDateLogin ?? DateTime.MinValue
您也可以尝试Nullable(T)属性:
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue
? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;
考虑使用以下方法,其效果远胜于可接受的答案
DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate == null
? DateTime.Now : (DateTime)_objHotelPackageOrder.UpdatedDate;
DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;
memDateLogin = m.memDateLogin ?? DateTime.MinValue