我有一个可以接受可为空参数的方法,因为它是从具有可为空列的表中填充的。

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/

10-13 07:46