如何将null或空字符串插入datetime var?

Gol*_*old 2 c# winforms

我从xml文件中获取数据,有时日期为空.

我有这个代码:

try { TimeTo = Convert.ToDateTime(R[15].ToString()); }    
catch { TimeTo = null ; }
Run Code Online (Sandbox Code Playgroud)

但我得到错误,因为我无法插入null到datetime var

我可以做什么 ?

thak提前

Chr*_*way 13

使TimeTo成为可以为空的属性,如下所示:

public DateTime? TimeTo { get; set; }
Run Code Online (Sandbox Code Playgroud)

比try/catch更好的解决方案是执行以下操作:

TimeTo = string.IsNullOrEmpty(R[15].ToString()) 
           ? (DateTime?) null 
           : DateTime.Parse(R[15].ToString());
Run Code Online (Sandbox Code Playgroud)


小智 5

DateTime是值类型,因此无法分配null.但...

DateTime.MinValue 是一个很好的替代品,以帮助指出缺乏价值.

try { TimeTo = Convert.ToDateTime(R[15].ToString()); }    
catch { TimeTo = DateTime.MinValue; }
Run Code Online (Sandbox Code Playgroud)

另一个选择是使用可空类型:

DateTime? TimeTo = null;
Run Code Online (Sandbox Code Playgroud)

并像这样引用它:

if (TimeTo.HasValue)
   something = TimeTo.Value;
Run Code Online (Sandbox Code Playgroud)