Как получить SingleOrDefault для возврата объекта по ссылке из списка?

Рассмотрим эти строки кода:

  //prodProdGroup is a list within the itm object that I need to search. The items
  //within the list are of type ProductionCostCalcHelper. I need to find one
  //of the ProductionCostCalcHelper records in the list, calculate its total dollar value
  //and assign it the value

  ProductionCostCalcHelper prodGroupItm = itm.prodProdGroup.SingleOrDefault(f => f.MAST_PROJ.Trim() == laborItm.MAST_PROJ.Trim());
  ProductionCostCalcHelper prodGroupItm2 = itm.prodProdGroup.SingleOrDefault(f => f.MAST_PROJ.Trim() == laborItm.MAST_PROJ.Trim());

  if (prodGroupItm != null)
  {
        prodGroupItm.TOTAL_DOLLAR = avgDollarsPerHour * prodGroupItm.HOURS;
  }

Я предполагаю, что метод SingleOrDefault вернет объект по ссылке, но это не так. После изменения количества ProdGroupItm в TOTAL_DOLLAR ProdGroupItm2 остается тем же самым доказательством того, что они не ссылаются на то, что находится в списке. Почему это? Есть ли способ обновить значение объекта в списке?

1 ответ

Решение

Это произойдет, если ваш ProductionCostCalcHelper тип изменчив struct,
Не делай этого; изменчивые структуры являются злом.

Каждый раз, когда вы проходите struct вокруг, все значение копируется во все, что вы передаете.

Используйте класс вместо этого.

Другие вопросы по тегам