【发布时间】:2012-02-17 23:55:19
【问题描述】:
我正在编写一个将DateTime 值作为其参数之一的方法。我决定它是可选参数,所以我继续尝试将DateTime.MinValue 设为默认值。
private void test(string something, DateTime testVar = DateTime.MinValue) {
}
但是这会产生一个错误:
“testVar”的默认参数值必须是编译时常量。
使用此代码似乎工作得很好。
private void test(string something, DateTime testVar = new DateTime()) {
}
有人建议我使用 DateTime.MinValue instead of new DateTime(),因为它是自我记录的。既然new DateTime() 基本上是一样的,为什么DateTime.MinValue 不能用?如果我把它留给new DateTime(),也会有任何潜在的问题吗?
【问题讨论】:
-
替代方法:什么时候将默认值设为 DateTime.MinValue 才有意义?我意识到它是 DateTime 的 default,但它实际上是给定方法的合适值吗?或者,如果没有提供该值,它不应该简单地为空吗?
-
我一直在使用
DateTime.MinValue从 SQL 获取值为空的值,因为DateTime不能为空。DateTime?是。 -
这就是我真正要理解的重点,在这里更适用。如果您要映射到支持可空日期的数据库,则在代码中使用可空日期似乎合适,然后将没有值的日期简单地设为空,就像它们在您的数据库中一样。只是一个想法。
-
我建议不要使用“DateTime.MinValue”作为可选参数的默认值,而是使用“default(DateTime)”。编译器更喜欢这一点,语义即使不是更清晰也同样清晰。