我有一个方法可以接受可空参数,因为它是从一个具有可空列的表中填充的。
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);
}
and this :
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。