【问题标题】:c# datarow comparing DBNull.Value for DateTime vs null for stringc# datarow 比较 DBNull.Value 的 DateTime 与 null 的字符串
【发布时间】:2013-11-15 15:21:11
【问题描述】:

我有以下似乎可以工作的代码:

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。

【问题讨论】:

    标签: c# datetime null datarow dbnull


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2011-02-15
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多