我一直在寻找,但没有找到解决办法。如何处理应该能够包含未初始化值(相当于null)的DateTime ?我有一个类,它可能有一个DateTime属性值设置或没有。我正在考虑将属性持有人初始化为DateTime。MinValue,然后可以很容易地检查。我想这是一个很常见的问题,你是怎么做到的?
当前回答
我会考虑使用可空类型。
DateTime吗?myDate而不是DateTime。
其他回答
您可以将DateTime设置为Nullable。默认情况下DateTime不是空的。有几种方法可以使它为空。在类型DateTime后使用问号?myTime或使用泛型样式Nullable。
DateTime? nullDate = null;
or
DateTime? nullDate;
DateTime ?MyDateTime{拿套;}
MyDateTime = (dr["f1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)dr["f1"]);
对于普通的DateTime,如果你根本不初始化它们,那么它们将匹配DateTime。MinValue,因为它是一个值类型而不是引用类型。
你也可以使用一个可空的DateTime,像这样:
DateTime? MyNullableDate;
或较长的形式:
Nullable<DateTime> MyNullableDate;
最后,有一种内置的方式来引用任何类型的默认值。对于引用类型,这将返回null,但对于我们的DateTime示例,它将返回与DateTime相同的值。MinValue:
default(DateTime)
或者,在c#的最新版本中,
default
我会考虑使用可空类型。
DateTime吗?myDate而不是DateTime。
我有同样的问题,因为我必须给Null作为DateTime的参数,同时执行单元测试抛出ArgumentNullException。它在我的情况下工作,使用以下选项:
Assert.Throws<ArgumentNullException>(()=>sut.StartingDate = DateTime.Parse(null));