【发布时间】:2015-04-01 23:02:48
【问题描述】:
我有以下代码块:
//Check to see if the Unique_ID is 10 or 11 and process accordingly
//10 = Both boxes, 11 = Rework only
if (reader.GetByte(16) == 10)
{
int ES = Convert.ToInt32(reader["ESCALATED"]);
if (ES == 0)
{
chkEscalated.Checked = false;
}
else
{
chkEscalated.Checked = true;
chkEscalated.Visible = true;
lblEscalated.Visible = true;
chkRework.Visible = true;
lblRework.Visible = true;
}
}
else if (reader.GetByte(16) == 11)
{
}
else
{
}
我遇到的问题是,有时 reader.GetByte(16) 为 NULL。发生这种情况时,我会收到一个错误:
数据为空。不能对 Null 值调用此方法或属性。
我还是个新手,所以我确定我缺少一些明显的东西,但我就是找不到。
【问题讨论】:
-
当你需要一个可能是
null的值时,你总是做同样的事情;使用前检查是否为null。 -
如何在上面的代码中做到这一点?我可以使用 IsNullOrEmpty 方法吗?如果可以,语法是什么?我从来没有在这种类型的代码块中使用过它。
-
您将它与空值进行比较,看看它是否实际上为空,就像您在任何地方处理任何空值一样,永远。或者,除此之外,只需询问 Google 您是否真的需要一种方法来确定阅读器中单元格的值是否为空。我知道你知道怎么做那个。
-
您的问题不在于您发布的代码。找出阅读器中的数据为空的原因。现在正如 anon 指出的那样,您确实希望执行一次 GetByte 调用,然后检查每个 if 语句中的值,否则您可能会解决您的直接问题,只是直接进入另一个问题。
标签: c# code-behind datareader