我从xml文件中获取数据,有时日期为空。
我有这段代码:
try { TimeTo = Convert.ToDateTime(R[15].ToString()); }
catch { TimeTo = null ; }
但我收到错误,因为我无法将null插入日期时间var
我能做什么?
提前预定
答案 0 :(得分:13)
让TimeTo成为可以为空的属性:
public DateTime? TimeTo { get; set; }
比try / catch更好的解决方案是执行以下操作:
TimeTo = string.IsNullOrEmpty(R[15].ToString())
? (DateTime?) null
: DateTime.Parse(R[15].ToString());
答案 1 :(得分:5)
DateTime
是值类型,因此无法分配null
。但...
DateTime.MinValue
是一个很好的替代品,可以帮助指出缺乏价值。
try { TimeTo = Convert.ToDateTime(R[15].ToString()); }
catch { TimeTo = DateTime.MinValue; }
另一个选择是使用可空类型:
DateTime? TimeTo = null;
并像这样引用它:
if (TimeTo.HasValue)
something = TimeTo.Value;
答案 2 :(得分:3)
稍微切线,如果你期望R [15]可能不是日期时间我会建议TryParse是更好的选择
if(DateTime.TryParse(R[15].ToString(),out TimeTo))
{
//TimeTo is set to the R[15] date do stuff you need to if it is good
}
else
{
//TimeTo is default (i.e. DateTime.MinValue) do stuff for a bad conversion (e.g. log, raise exception etc)
}