1

我有一个 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);
    }
}

当值为空并且我正在尝试检查它是否可以为空时 - 它只是一直说强制转换无效:

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

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

不太明白为什么。

有任何想法吗?谢谢

4

2 回答 2

1

您不应该只是将 Nullable DateTime转换为DateTime类似的。当它为空时它将中断。

使用DateTime.HasValue,DateTime.Value如果它返回 true。

于 2013-09-02T13:43:55.487 回答
-1

您正在转换为DateTime,这是一个值类型,永远不可能是null

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

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

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

于 2013-09-02T13:08:24.697 回答