【发布时间】:2013-02-08 17:23:09
【问题描述】:
我有一个数据行,其中一列中有一个整数。但是,以下代码不会评估为 true。我很难理解为什么。我错过了什么?
foreach (DataRow dr in dataset.Tables[0].Rows)
{
//this evaluates as false, even when I have a valid castable INT value in the column (as an object).
if (dr[3] is int)
{
if (Convert.ToInt32(dr[3]) == 3)
{
//do something with row
}
else if (Convert.ToInt32(dr[3]) == 4)
{
//do someting else with row
}
}
}
【问题讨论】:
-
设置断点,看看是什么数据类型?它可以转换为 int 并不意味着它是一个 int。
-
那不是演员,而是皈依者。它可能是一个字符串。
-
也许这个question会帮助你
-
另外,进行一次转换并与变量进行比较。也应该看看
switch声明。 -
如果你运行
dr[3].GetType().ToString(),你会得到什么?
标签: c#