저는 현재 매우 간단한 방법으로 CurveValue (사용자 지정 개체) 목록을 계산합니다. 문제는 매개 변수를 계산하고 실제로 변경하지 않고 소수를 전달해야한다는 것입니다. 매개 변수.AddRange() 및 LINQ 복사 문제
매개 변수 곡선에 영향을 미치지 않지만 참조가 여전히 존재하고 ForEach()가 수행 된 후에 양쪽 곡선 모두에 AddRange()를 시도하고 curveA가 변경되었습니다.
아직 참조 된 것으로 가정하고 있지만 매개 변수 곡선을 통해 열거하고 curveA에 추가하지 않으면이 작업을 쉽게 수행 할 수 있습니까?
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);
}
죄송합니다. 내 코드를 업데이트했습니다. 합계는 분명한 방법입니다. 각 CurveValue 객체를 개별적으로 계산하고 합계해야합니다. 조작 측은 괜찮습니다. curveA에서 조작이 수행 될 때 왜 곡선이 갱신되는지 알 수 없습니다. – nik0lias
@ nik0lias CurveA에는 곡선의 동일한 객체에 대한 참조가 포함되어 있으므로 변경할 때 동일한 객체를 계속 처리합니다 (curveA.ForEach (...)에서). –
curveA에 커브를 복사하고 참조를 제거하는 쉬운 방법이 있습니까? 아니면 새로운 오브젝트를 열거하고 생성 한 후 curveA에 추가하는 것입니까? – nik0lias