用于存储先前值(并刷新它们)的正确代码

时间:2018-08-06 03:47:21

标签: arrays sorting for-loop historical-debugging

因此,这是某人(我)编写非常糟糕的C#代码的示例。

我正在尝试找出存储值并将其替换为已知值的最佳方法。

这是我之前做过的事情:

int
EMA_Value_Prev4,
EMA_Value_Prev3,
EMA_Value_Prev2,
EMA_Value_Prev,
EMA_Value;

EMA_Value_Prev4 = EMA_Value_Prev3;
EMA_Value_Prev3 = EMA_Value_Prev2;
EMA_Value_Prev2 = EMA_Value_Prev;
EMA_Value_Prev = EMA_Value;
EMA_Value = 0;

//  In the below space, some code figures out what EMA_Value is

/*  Some amazing code */

//  EMA_Value now equals 245 (hypothetically).

从那时起,我就使用数组将其与for循环一起存储,如下所示:

 int [] EMA_Value = new int [5];

 for (xCount=4; xCount>1; xCount--)
    {EMA_Value[xCount] = EMA_Value[xCount - 1]; }   

对于比我更高级,经验更丰富(和更聪明)的编码器,我应该怎么做才能更有效/更优雅/更友好?

在此之前,请随时感谢您的关注。 :)

1 个答案:

答案 0 :(得分:1)

之所以这样做,是因为在某些情况下要获取先前的值。您可以考虑使用类似Stack的东西。 .NET具有内置堆栈

Stack<int> stack = new Stack<int>();
stack.push(10)
int topValue = stack.pop()

每次获取新值时,都调用stack.push(newValue)。如果要使用先前的值(与浏览器中的“后退”按钮相同),则可以使用pop。

如果您对runge-kutta ODE求解器等使用最后N个值,那么使用数组的解决方案与其他实现一样好