【发布时间】:2016-05-19 16:49:30
【问题描述】:
我有一个可以接受可为空参数的方法,因为它是从具有可为空列的表中填充的。
private void test(int ID, int? value)
{}
当调用这个方法时,我需要一些方法来给它一个可以为空的变量,这就是我的问题。 我试过这个:
foreach (DataRow row in DataTable1.Rows)
{
test((int)row["ID"], (int?)row["value"]);
}
但它给了我一个铸造错误
“指定的强制转换无效”
所以我尝试了这个:
foreach (DataRow row in DataTable1.Rows)
{
test((int)row["ID"], (int)row["value"] ?? DBnull.Value);
}
还有这个:
foreach (DataRow row in DataTable1.Rows)
{
test((int)row["ID"], (int)row["value"] ?? null);
}
但他们都给我错误
"运算符 ?? 不能应用于 int 和 null 类型的操作数
我尝试的最后一个是这样的:
foreach (DataRow row in DataTable1.Rows)
{
test((int)row["ID"], (int?)row["value"] ?? null);
}
这个编译但给出运行时错误
“指定的强制转换无效”
那么我该怎么做呢? 这个想法是,参数值要么用表中的值填充,要么用 null 填充。
【问题讨论】: