我在我的成员类中定义了一个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
它们都不起作用 - 它总是说演员表无效。
不太明白为什么。
有什么想法吗?谢谢
答案 0 :(得分:1)
你不应该只将Nullable DateTime
投射到这样的DateTime
。当它为空时会中断。
如果返回true,请使用DateTime.HasValue
和DateTime.Value
。
答案 1 :(得分:-1)
您正在投射到DateTime
,这是一个value type,而且不能null
。
如果您想检查DateTime?
,请转为null
,或者更确切地说,不要投票,而是直接检查:
if(_currentProfile.DOB.HasValue)
txtDOB.Text = _currentProfile.DOB.ToString();
请注意,如果有值,您可以使用它。您的原始代码似乎是倒退的。