因此,这是某人(我)编写非常糟糕的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]; }
对于比我更高级,经验更丰富(和更聪明)的编码器,我应该怎么做才能更有效/更优雅/更友好?
在此之前,请随时感谢您的关注。 :)
答案 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个值,那么使用数组的解决方案与其他实现一样好