C# 如何在方法中提供可为null的参数?
我有一个方法可以接受可为null的参数,因为它是从具有可为null的列的表中填充的C# 如何在方法中提供可为null的参数?,c#,nullable,C#,Nullable,我有一个方法可以接受可为null的参数,因为它是从具有可为null的列的表中填充的 private void test(int ID, int? value) {} 当调用此方法时,我需要某种方法为其提供一个可为null的变量,这就是我的问题。 我试过这个: foreach (DataRow row in DataTable1.Rows) { test((int)row["ID"], (int?)row["value"]); } foreach (DataRow row in Dat
private void test(int ID, int? value)
{}
当调用此方法时,我需要某种方法为其提供一个可为null的变量,这就是我的问题。
我试过这个:
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"]);
}
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来填充参数值。您可以使用支持可空类型的
DataRow
扩展方法:
foreach (DataRow row in DataTable1.Rows)
{
int id = row.Field<int>("ID");
int? value = row.Field<int?>("value");
test(id, value);
}
foreach(DataTable1.Rows中的DataRow行)
{
int id=行字段(“id”);
int?值=行字段(“值”);
测试(id、值);
}
尝试使用(如果失败,返回null
的安全强制转换):