如何检查DateTime字段是否不为null或空?

57

我在学习C#,有一个疑问。

在我正在开发的应用程序中,我发现了以下代码:

if (!String.IsNullOrEmpty(u.nome))

这段代码仅检查 u 对象的 nome 字段是否为空或 null 字符串。

我很清楚这一点,但如果要检查一个字段不是字符串而是 DateTime 对象怎么办?


我认为这很简单,如果u.Datefield!= null,则返回u.Datefield,否则返回DateTime.MinValue; - Incredible
1
几乎与今天早上他/她提出的问题完全相同:http://stackoverflow.com/questions/21904138/how-to-check-if-a-field-is-not-null - laminatefish
@LokiSinclair 很好的发现。 - Nagaraj S
2
既然您是C#的新手并且似乎渴望学习,请阅读此链接:http://www.microsoft.com/en-us/download/confirmation.aspx?id=7029 并查看4.1.10关于可空类型的内容,以回答您在这里提出的具体问题。 - Aaron Palmer
2个回答

143
如果您声明一个 DateTime,那么默认值就是 DateTime.MinValue,因此您需要像这样检查它:

如果您声明一个 DateTime,那么默认值就是 DateTime.MinValue,因此您需要像这样检查它:

DateTime dat = new DateTime();

 if (dat==DateTime.MinValue)
 {
     //unassigned
 }
如果 DateTime 是可空的,那就是另一回事了:
 DateTime? dat = null;

 if (!dat.HasValue)
 {
     //unassigned
 }

你也可以将其更改为 if(dat == default) { } - pallares

24

DateTime不是标准的可为空类型。如果你想对DateTime类型的变量赋空值,你必须使用支持空值的DateTime?类型。

如果你只想测试变量是否已被设置(例如变量保存了除默认值之外的值),你可以像以下代码一样使用关键字"default":

if (dateTimeVariable == default(DateTime))
{
    //do work for dateTimeVariable == null situation
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接