如何检查是否未分配DateTime对象?

Mar*_*all 2 c# datetime sql-server-2008

所以,首先.代码:我上课了:

public class Myobject
{
    public string Code { get; set; }
    public DateTime? StartDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是非常简单的来源的一部分:

MyObject mo = new MyObject();
mo.Code= "sth";
// NO action on StartDate property! 

    if (mo.StartDate.HasValue)
    {
        sc.Parameters.Add(new SqlParameter("@inStartDate", mo.StartDate.Value));
    }
    else
    {
        sc.Parameters.Add(new SqlParameter("@inStartDate", DBNull.Value));
    }
Run Code Online (Sandbox Code Playgroud)

简单'如果' - Sql Server 2008,抛出错误 - 当获取null Datetime(它必须是DBNull.Value)所以我想先检查它,然后传递正确的值或DBNull.

我的问题是 - 这'如果'总是重演真实!为什么!?

还试过:

if (mo.StartDate.Value == null)
Run Code Online (Sandbox Code Playgroud)

但它总是返回false.怎么不是空的?它甚至没有创建..

那么.. 如何检查是否未分配DateTime对象?

小智 5

试试这个:


if (mo.StartDate.GetValueOrDefault() != DateTime.MinValue) 
{
  // True - mo.StartDate has value
}
else
{
  // False - mo.StartDate doesn't have value
}

Run Code Online (Sandbox Code Playgroud)