[英]Issue passing in a DataRow Type using Ref within C#
我正在使用“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);
}
}
正如其他人指出的那樣,裁判很可能是不必要的。 類已經通過引用傳遞,只有當類型'Result'是DoWork正在修改的結構時 .BuildRequest才需要ref關鍵字(因為它們被值復制而且更改的值不會傳播到調用堆棧中)。 為清晰起見,刪除可能是最佳選擇。 但是如果你不能或者這是你的簽名無法改變的代碼,你可以采用本地引用並傳遞它。
foreach(DataRow row in dt.Rows)
{
if (row["FieldData"].ToString().Trim() == "Value")
{
var dr = row;
// Do work
DoWork.BuildRequest(ref dr, ref Result);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.