使用三元
进行设置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
我见过的最奇怪的事情。
答案 0 :(得分:6)
看起来endDate正在初始化为DateTime.MinValue,你能显示你声明endDate的代码吗?
另外,更短的方式:
DateTime filterDate = endDate ?? DateTime.Now.AddDays(7);
答案 1 :(得分:5)
我无法重现这一点。无论如何,这是这样做的首选方式:
DateTime filterDate = endDate ?? DateTime.Now.AddDays(7);