【发布时间】:2014-08-03 10:29:57
【问题描述】:
我从 Sql 查询中获取日期信息,如果存在,则将其分配给变量,如果不存在 - 将 date_1 留空。编译器试图预测 date_1 可能为空并阻止使用它,但它没有看到我在使用它之前检查它是否为空。它有什么问题?
第一种情况 - 我使用 bool 标志来表示日期不为空
DateTime date_1;
bool date_1_exists = false;
if (!reader1.IsDBNull(reader1.GetOrdinal("date_1")))
{
date_1_exists = true;
date_1 = Convert.ToDateTime(reader1["date_1"]);
}
if (date_1_exists == true)
{
label1.Text = "date_1: " + date_1.ToString(); // Compiler marks date_1 as error
label2.Text = "date_2: " + (date_1.AddYears(1)).ToString() + ".";
}
第二种情况 - 我使用 可为空的日期时间
DateTime? date_1;
if (!reader1.IsDBNull(reader1.GetOrdinal("date_1")))
date_1 = Convert.ToDateTime(reader1["date_1"]);
else
date_1 = null;
if (date_1.HasValue)
{
label1.Text = "date_1: " + date_1.ToString();
label2.Text = "date_2: " + (date_1.AddYears(1)).ToString() + "."; // Compiler marks AddYears as error
}
如何使用可以为 null 的 DateTime 变量,但如果它不为 null,则应在进一步计算中使用它。
【问题讨论】:
-
请显示确切的编译器错误。
标签: asp.net datetime null conditional-statements