我一直在寻找,但没有找到解决办法。如何处理应该能够包含未初始化值(相当于null)的DateTime ?我有一个类,它可能有一个DateTime属性值设置或没有。我正在考虑将属性持有人初始化为DateTime。MinValue,然后可以很容易地检查。我想这是一个很常见的问题,你是怎么做到的?


当前回答

下面的方法也可以

myClass.PublishDate = toPublish ? DateTime.Now : (DateTime?)null;

请注意属性PublishDate应该是DateTime?

其他回答

我有同样的问题,因为我必须给Null作为DateTime的参数,同时执行单元测试抛出ArgumentNullException。它在我的情况下工作,使用以下选项:

Assert.Throws<ArgumentNullException>(()=>sut.StartingDate = DateTime.Parse(null));

我总是把时间设置为DateTime.MinValue。这样我就不会得到任何NullErrorException,我可以将它与我知道没有设置的日期进行比较。

可以使用可空类。

DateTime? date = new DateTime?();

您可以将DateTime设置为Nullable。默认情况下DateTime不是空的。有几种方法可以使它为空。在类型DateTime后使用问号?myTime或使用泛型样式Nullable。

DateTime? nullDate = null;

or

DateTime? nullDate;

如果你有时期望null,你可以使用这样的东西:

var orderResults = Repository.GetOrders(id, (DateTime?)model.DateFrom, (DateTime?)model.DateTo)

在存储库中使用可空datetime。

public Orders[] GetOrders(string id, DateTime? dateFrom, DateTime? dateTo){...}