2013-11-15 27 views
0

我有下面的代碼,似乎工作:C#數據行的日期時間VS空比較DBNull.Value字符串

DataRow row = <result of a query>; 
string strVarName = (row["VarName"]??"").ToString(); 

我也可以用這樣的事情 - 這也適用:

string strVarName = row["VarName"]==null ? "" : row["VarName"].ToString(); 

我想用同樣的形式獲得一個約會。智能感知告訴我,可爲空的操作者不喜歡使用日期,所以我想類似的東西,我必須做出

string strVarName = row["VarName"]==DBnull.Value ? "" : row["VarName"].ToShortDateString(); 

明白了嗎?對於字符串,我比較爲空,但對於日期我比較DBnull。日期字符串不會與空值比較一致。我可以接受這...這可能是,如果我試圖把它比作DBNull.Value字符串比較會工作。我只是好奇,爲什麼它似乎比較一個DataRow的日期時間字段,當我必須使用DBNull.Value,而比較字符串字段時,我可能會使用空。

回答

2

的DateTime是值類型,不能爲空,所以你不能把它比作空(就像你不能比較INT爲null)。