Nullable DateTime?到DateTime转换不起作用

时间:2013-09-02 13:05:20

标签: datetime casting null nullable type-conversion

我在我的成员类中定义了一个DOB属性作为可以为空的DateTime?:

public DateTime? DOB
{
    get
    {
        var o = base.GetPropertyValue("memberDOB");
        if (o == DBNull.Value)
        {
            return null;
        }
        return (DateTime?)o;
    }
    set
    {
        base.SetPropertyValue("memberDOB", value);
    }
}

当值为null并且我正在尝试检查它是否可为空时 - 它只是一直说该演员表是无效的:

if((DateTime)_currentProfile.DOB == null)
    txtDOB.Text = _currentProfile.DOB.ToString();

我试过

TryParse(_currentProfile.DOB.ToString(), out dob)

_currentProfile.DOB == null

_currentProfile.DOB.ToString()

(DateTime)_currentProfile.DOB

它们都不起作用 - 它总是说演员表无效。

不太明白为什么。

有什么想法吗?谢谢

2 个答案:

答案 0 :(得分:1)

你不应该只将Nullable DateTime投射到这样的DateTime。当它为空时会中断。

如果返回true,请使用DateTime.HasValueDateTime.Value

答案 1 :(得分:-1)

您正在投射到DateTime,这是一个value type,而且不能null

如果您想检查DateTime?,请转为null,或者更确切地说,不要投票,而是直接检查:

if(_currentProfile.DOB.HasValue)
    txtDOB.Text = _currentProfile.DOB.ToString();

请注意,如果值,您可以使用它。您的原始代码似乎是倒退的。