我有一個可空DateTime字段「出生日期」的現有代碼以這樣的方式解釋處理DBNull?
info.BirthDate = (DateTime?)reader["Birthdate"];
這會導致「無效的轉換」錯誤和它打破了這個HANDELING。好吧,我明白這是因爲空值從SQL返回不同,是類型「DBNull的」
定爲這竟然是
if (reader["Birthdate"] != DBNull.Value)
{
info.Birthdate = (DateTime)reader["Birthdate"];
}
有人能解釋到底爲什麼這個工程?我特別是在DBNull的.Value部分丟失了。如果它返回爲DBNull IS代碼甚至可以在這個塊內到達嗎?
.... OH。好吧,因爲這個屬性是可以空的,所以它沒有任何內容,並且這個塊被跳過。我現在明白了。謝謝! – Evr 2013-03-14 15:58:22
第三個選項是'reader [「Birthdate」]作爲DateTime?'。 (對第三種選擇有有效的反對意見,並且也有贊成的有效論據,我寧願避免這樣的討論:)) – hvd 2013-03-14 15:58:23
啊,對了,會的。說我可以在4分鐘內。這是我第一篇帖子SO – Evr 2013-03-14 16:01:31