首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DateTime.MinValue vs C#中的新DateTime()

DateTime.MinValue vs C#中的新DateTime()
EN

Stack Overflow用户
提问于 2010-03-16 17:17:44
回答 6查看 14.5K关注 0票数 10

在获取SQL时,Resharper建议在DateTime为DBNull.Value时使用new DateTime()。我一直使用DateTime.MinValue。哪种方式才是正确的?

代码语言:javascript
运行
复制
DateTime varData = sqlQueryResult["Data"] is DateTime ? (DateTime) sqlQueryResult["Data"] : new DateTime();
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-16 17:20:31

来自the documentation of DateTime.MinValue

MinValue定义分配给未初始化的DateTime变量的日期和时间。

因此,结果日期将是相同的。因为DateTime是一个值类型,所以这两个选项应该是等价的。就我个人而言,我更喜欢编写DateTime.MinValue,因为它是自我记录的。

PS:如果您的数据可以包含(有意义的)空值,那么您可能需要考虑使用nullable types (DateTime?)。

票数 18
EN

Stack Overflow用户

发布于 2010-03-16 17:27:20

通常,我会显式处理NULL的情况。大致是这样的:

代码语言:javascript
运行
复制
if (!sqlQueryResults.IsNull("Data"))
    DoComputationDependantOnDateTime((DateTime) sqlQueryResults["Data"]);

在某些情况下,即使不存在数据,执行逻辑也可能是有意义的。在这种情况下,只有您知道从哪个默认值开始。可能的候选人:

  • DateTime.MinValue
  • DateTime.MaxValue
  • DateTime.Now

我永远不会使用new DateTime(),因为它的可读性很差。该语句返回什么?您(以及项目中的未来开发人员)可能需要查看文档以确定该值的初始化值是什么。

票数 2
EN

Stack Overflow用户

发布于 2010-03-16 17:21:08

我会说总是使用MinValue,因为这样您就可以确切地知道它的价值是什么。当您简单地使用新的DateTime()时,您是在初始化它以保存值,而不是指定要放入其中的值。显式地将一个值放入其中也会更简洁和清晰。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2453145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档