Проблема с копированием AddRange () и LINQ

В настоящее время у меня есть довольно простой метод, который вычисляет список CurveValue (настраиваемый объект), проблема в том, что мне нужно вычислить параметр и передать десятичное число обратно без фактического изменения параметра.

Я попытался добавить AddRange () в новый объект, чтобы это не повлияло на кривую параметров, но похоже, что ссылка все еще существует, и после выполнения ForEach () изменились как curve, так и curveA.

Я предполагаю, что на него все еще есть ссылка, но есть ли простой способ сделать это, не перечисляя кривую параметров и не добавляя ее в кривую 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);
}
5
задан abatishchev 11 January 2012 в 14:29
поделиться