Как получить 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
вокруг, все значение копируется во все, что вы передаете.
Используйте класс вместо этого.