簡體   English   中英

在C#中使用Ref傳遞DataRow類型的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM