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


当前回答

DateTime ?MyDateTime{拿套;}

MyDateTime = (dr["f1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)dr["f1"]);

其他回答

值得指出的是,虽然DateTime变量不能为空,但它仍然可以被比较为空而不会出现编译器错误:

DateTime date;
...
if(date == null) // <-- will never be 'true'
  ...

我会考虑使用可空类型。

DateTime吗?myDate而不是DateTime。

可以使用可空类。

DateTime? date = new DateTime?();

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

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

在存储库中使用可空datetime。

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

DateTime ?MyDateTime{拿套;}

MyDateTime = (dr["f1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)dr["f1"]);