寻找一种比以下方法更好的方法来比较可为空的日期时间:
有什么建议?
// myobject.ExpireDatetime is of DateTime?
//
if (!myobject.ExpireDateTime.IsNull() && DateTime.Compare((DateTime)myobject.ExpireDateTime, DateTime.Now.ToUniversalTime()) < 0)
{ //error! }
最佳答案
您的问题对我来说不太清楚,但是如果我们有
DateTime? ExpireDateTime; // could be a variable or a property
可以这样说
if (ExpireDateTime < DateTime.UtcNow)
{
...
}
如果
ExpireDateTime
为null
(HasValue
为false),则可以。一些经验不足的开发人员将难以理解lifted operators,因此,更清楚地说,您可以编写if (ExpireDateTime < (DateTime?)DateTime.UtcNow)
{
...
}
一样,但是更容易阅读和理解。
当然,如果nullable可能为null,则不要编写
.Value
。如果这样做,您将得到一个InvalidOperationException
“可为空的对象必须具有一个值”。