Ошибка передачи в типе DataRow с использованием Ref в C # - PullRequest
0 голосов
/ 07 мая 2019

Я перебираю DataTable, используя цикл «for» или «foreach», затем я пытаюсь передать DataRow в другой метод, используя «Ref» для ссылки на строку, которую мне нужно изменить. Однако затем я вижу следующую ошибку:

Свойство или индексатор нельзя передавать как параметр 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);
    }
}

1 Ответ

0 голосов
/ 20 мая 2019

Как уже отмечали другие, ссылка, скорее всего, не нужна. Классы уже передаются по ссылке, только если тип '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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...