我從XML文件中獲取數據,有時日期爲空。如何向datetime var中插入空或空字符串?
我有這樣的代碼:
try { TimeTo = Convert.ToDateTime(R[15].ToString()); }
catch { TimeTo = null ; }
,但我得到的錯誤,因爲我不能插入空爲datetime VAR
我可以做什麼?
thak的預先
我從XML文件中獲取數據,有時日期爲空。如何向datetime var中插入空或空字符串?
我有這樣的代碼:
try { TimeTo = Convert.ToDateTime(R[15].ToString()); }
catch { TimeTo = null ; }
,但我得到的錯誤,因爲我不能插入空爲datetime VAR
我可以做什麼?
thak的預先
讓TimeTo可空的屬性是這樣的:
public DateTime? TimeTo { get; set; }
比th更好的解決方案Ë的try/catch是做這樣的事情:
TimeTo = string.IsNullOrEmpty(R[15].ToString())
? (DateTime?) null
: DateTime.Parse(R[15].ToString());
DateTime
是值類型,並且因此不能被分配null
。但...
DateTime.MinValue
是一個很好的替代品,以幫助指出缺乏價值。
try { TimeTo = Convert.ToDateTime(R[15].ToString()); }
catch { TimeTo = DateTime.MinValue; }
另一種選擇是使用可空類型的:
DateTime? TimeTo = null;
而且像這樣引用它:
if (TimeTo.HasValue)
something = TimeTo.Value;
引用它的另一種有用方法是使用摺疊操作符。表達式看起來像'TimeTo?如果前者爲null,則解析爲後者。 – 2010-09-15 14:47:09
對不起,'''是C#中的空合併運算符。 – 2010-09-15 14:57:50
有輕微的切線,如果你期待的是,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)
}
謝謝!是工作 !! – Gold 2010-09-15 15:00:08