在获取SQL时,Resharper建议在DateTime为DBNull.Value时使用new DateTime()。我一直使用DateTime.MinValue。哪种方式才是正确的?
DateTime varData = sqlQueryResult["Data"] is DateTime ? (DateTime) sqlQueryResult["Data"] : new DateTime();发布于 2010-03-16 17:20:31
来自the documentation of DateTime.MinValue
MinValue定义分配给未初始化的DateTime变量的日期和时间。
因此,结果日期将是相同的。因为DateTime是一个值类型,所以这两个选项应该是等价的。就我个人而言,我更喜欢编写DateTime.MinValue,因为它是自我记录的。
PS:如果您的数据可以包含(有意义的)空值,那么您可能需要考虑使用nullable types (DateTime?)。
发布于 2010-03-16 17:27:20
通常,我会显式处理NULL的情况。大致是这样的:
if (!sqlQueryResults.IsNull("Data"))
DoComputationDependantOnDateTime((DateTime) sqlQueryResults["Data"]);在某些情况下,即使不存在数据,执行逻辑也可能是有意义的。在这种情况下,只有您知道从哪个默认值开始。可能的候选人:
DateTime.MinValueDateTime.MaxValueDateTime.Now我永远不会使用new DateTime(),因为它的可读性很差。该语句返回什么?您(以及项目中的未来开发人员)可能需要查看文档以确定该值的初始化值是什么。
发布于 2010-03-16 17:21:08
我会说总是使用MinValue,因为这样您就可以确切地知道它的价值是什么。当您简单地使用新的DateTime()时,您是在初始化它以保存值,而不是指定要放入其中的值。显式地将一个值放入其中也会更简洁和清晰。
https://stackoverflow.com/questions/2453145
复制相似问题