Obecnie mam metodę, która jest dość prosta i oblicza listę CurveValue (obiekt niestandardowy), problem, który mam, to muszę obliczyć parametr i przekazać dziesiętny z powrotem bez faktycznej zmiany parametr.AddRange() i kwestia kopiowania LINQ
Próbowałem AddRange() do nowego obiektu, więc nie wpłynie to na krzywą parametru, ale wydaje się, że referencja nadal istnieje i po wykonaniu ForEach() zmieniła się zarówno krzywa, jak i krzywa A.
Przypuszczam, że jest on nadal przywoływany, ale czy istnieje prosty sposób wykonania tej operacji bez wyliczania za pomocą krzywej parametru i dodawania jej do krzywej A?
public decimal Multiply(List<CurveValue> curve, decimal dVal)
{
List<CurveValue> curveA = new List<CurveValue>();
curveA.AddRange(curve);
curveA.ForEach(a => a.Value = decimal.Round(a.Value, 4) * dVal);
return Sum(curveA);
}
public decimal Sum(List<CurveValue> curveA)
{
return curveA.Sum(x => x.Value);
}
Przepraszam, zaktualizowałem mój kod. Suma jest tylko metodą, która robi oczywiste. Muszę obliczyć indywidualnie każdy obiekt CurveValue, a następnie je zsumować. Strona operacji jest w porządku, po prostu nie mam pojęcia, dlaczego krzywa jest aktualizowana, gdy operacja jest wykonywana na krzywejA. – nik0lias
@ nik0lias CurveA zawiera odniesienia do dokładnie tych samych obiektów na krzywej, więc nadal masz do czynienia z tymi samymi obiektami podczas ich zmiany (w curveA.ForEach (...)). –
Czy istnieje łatwy sposób kopiowania krzywej do krzywej A i usuwania odniesień? Czy jest to przypadek wyliczania i tworzenia nowych obiektów, a następnie dodawania ich do curveA? – nik0lias