0

所以这里有一个人(我)编写非常糟糕的 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]; }   

对于比我更先进、更有经验(和更聪明)的编码器,我应该做些什么,而不是更高效/优雅/流程友好?

提前感谢您提出这个问题的任何时间或关注。:)

4

1 回答 1

1

如果您这样做的原因是因为您想在某些情况下获取以前的值。您可以考虑使用 Stack 之类的东西。.NET 有一个内置堆栈

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

每次获得新值时,调用 stack.push(newValue)。如果您想要之前的值(与浏览器上的后退按钮的行为方式相同),那么您可以使用 pop.

如果您将最后 N 个值用于 runge-kutta ODE 求解器之类的东西,那么您的数组解决方案与任何其他实现一样好

于 2018-08-06T03:54:19.020 回答