比较可以为空的DateTime?
寻找更好的方法来比较可以为空的日期时间而不是以下:
有什么建议?
// myobject.ExpireDatetime is of DateTime? // if (!myobject.ExpireDateTime.IsNull() && DateTime.Compare((DateTime)myobject.ExpireDateTime, DateTime.Now.ToUniversalTime()) < 0) { //error! }
编辑:很抱歉混淆… myobject.ExpireDatetime是DateTime类型。
你的问题对我来说不是很清楚,但如果有的话
DateTime? ExpireDateTime; // could be a variable or a property
可以这么说
if (ExpireDateTime < DateTime.UtcNow) { ... }
如果ExpireDateTime
为null
( HasValue
为false),则可以。 一些缺乏经验的开发人员很难理解提升的操作员 ,所以为了更清楚,你可以写
if (ExpireDateTime < (DateTime?)DateTime.UtcNow) { ... }
它是一样的,但更容易阅读和理解。
当然,如果可以为null,则永远不要写.Value
。 如果这样做,您将获得InvalidOperationException
“Nullable对象必须具有值” 。
我建议你使用以下内容:
int y = Nullable.Compare(DateTime.UtcNow, x); // x is the nullable date time object. // y will be '-1' if x is greater than DateTime.UtcNow
使用可空的Value
属性:
objet.ExpireDateTime.Value
if (!object.ExpireDateTime.IsNull() && DateTime.Compare(objet.ExpireDateTime.Value, DateTime.Now.ToUniversalTime()) < 0) { }
如果ExpireDateTime
是Nullable
我会改为:
if (ExpireDateTime.HasValue && ExpireDateTime < DateTime.Now.ToUniversalTime()) { }