奇怪的.Net日期时间问题

时间:2010-01-28 15:09:02

标签: c# .net datetime

使用三元

进行设置
DateTime filterDate = endDate.HasValue ? endDate.Value : DateTime.Now.AddDays(7);

非三元

DateTime filterDate;
if (endDate.HasValue)
    filterDate = endDate.Value;
else
    filterDate = DateTime.Now.AddDays(7);

如果调试这两个语句,filterDate的值将不相同。这是为什么?

在第一个示例中,filterDate的最终值为01/01/0001。 在第二个例子中,我得到了预期的结果,即filterDate是将来7天的日期时间。

编辑: 在这一点上,我甚至尝试设置endDate = null只是为了确保这里发生了什么的屏幕截图。 alt text http://www.freeimagehosting.net/uploads/57bef2e50a.png

我见过的最奇怪的事情。

2 个答案:

答案 0 :(得分:6)

看起来endDate正在初始化为DateTime.MinValue,你能显示你声明endDate的代码吗?

另外,更短的方式:

DateTime filterDate = endDate ?? DateTime.Now.AddDays(7);

答案 1 :(得分:5)

我无法重现这一点。无论如何,这是这样做的首选方式:

DateTime filterDate = endDate ?? DateTime.Now.AddDays(7);