寻找一种比以下方法更好的方法来比较可为空的日期时间:

有什么建议?

// 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)
{
  ...
}

如果ExpireDateTimenull(HasValue为false),则可以。一些经验不足的开发人员将难以理解lifted operators,因此,更清楚地说,您可以编写
if (ExpireDateTime < (DateTime?)DateTime.UtcNow)
{
  ...
}

一样,但是更容易阅读和理解。

当然,如果nullable可能为null,则不要编写.Value。如果这样做,您将得到一个InvalidOperationException“可为空的对象必须具有一个值”。

10-08 02:19