我有一个可以接受可为空参数的方法,因为它是从具有可为空列的表中填充的。
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);
}
但他们都给我错误
我试过的最后一个是这样的:
foreach (DataRow row in DataTable1.Rows)
{
test((int)row["ID"], (int?)row["value"] ?? null);
}
这个编译但给出运行时错误
那么我该怎么做呢?
这个想法是用表中的值或空值填充参数值。
最佳答案
您可以使用支持可为空类型的 DataRow
扩展方法 Field
:
foreach (DataRow row in DataTable1.Rows)
{
int id = row.Field<int>("ID");
int? value = row.Field<int?>("value");
test(id, value);
}
关于c# - 如何在方法中提供可为空的参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37317702/