c#datarow比较DateTime的DBNull.Value和string的null

时间:2013-11-15 15:21:11

标签: c# datetime null datarow dbnull

我有以下似乎有效的代码:

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

我也可以使用这样的东西 - 它也有效:

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

我想使用相同的表格来获取日期。 Intellisense告诉我可空操作符不喜欢使用日期,所以我尝试类似的东西,我必须做

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

得到那个?对于字符串我比较为null,但是对于日期我比较DBnull。通过与null的比较,日期字符串将无法一致地工作。我没关系...如果我试图将它与DBNull.Value进行比较,那么字符串比较可能会有效。我只是好奇为什么在比较DataRow的DateTime字段时我必须使用DBNull.Value,而在与字符串字段比较时我可能使用null。

1 个答案:

答案 0 :(得分:2)

DateTime是一个值类型,不能为null,因此您无法将其与null进行比较(就像您可以将int与null进行比较)。