【发布时间】:2019-09-24 22:56:10
【问题描述】:
我正在使用“for”或“foreach”循环遍历 DataTable,然后尝试使用“Ref”将 DataRow 传递给另一个方法,以引用我需要修改的行。但是,然后我看到以下错误:
属性或索引器不能作为 out 或 ref 参数传递
我想将 DataRow 传递到我的方法中,因为这会否定进一步的代码块来更新原始 DataTable。这可能吗?
我尝试了以下方法:
// Build request
for(int x = 0; x < (dt.Rows.Count -1); x++)
{
if (dt.Rows[x]["FieldData"].ToString().Trim() == "Value")
{
// Do work
DoWork.BuildRequest(ref dt.Rows[x], ref Result);
}
}
还有:
// Build request
foreach(DataRow row in dt.Rows)
{
if (row["FieldData"].ToString().Trim() == "Value")
{
// Do work
DoWork.BuildRequest(ref row, ref Result);
}
}
【问题讨论】:
-
我认为您误解了
ref在这里所做的事情。你不需要它,因为你不需要改变你传递的对象的 instance,你只是在修改它的内部属性。 -
“因为这否定了进一步的代码块来更新原始 DataTable” 似乎你试图滥用
ref,lockDataTable如果你不这样做'迭代时不想更新 -
我使用 ref 传递它,因为它调用另一个类的方法。我想修改传递给该方法的原始行,而不必返回 DataRow 并编写更多代码来更新 DataTable 中的原始行。我认为 ref 是最好的使用案例。
-
肯定将 DataRow 传入方法(没有 ref)不允许我修改原始行?如果我错了,请纠正我。也谢谢大家的帮助