如何避免我的数组在循环过程中被重新分配值?

How to avoid my array from being reassigned values as I progress through my loop?

下面是我的代码-

double[][] geometricReturnsArray = new double[returnsArray.Count][];;
double[] tempGeometricReturns = new double[returnsArray[0].Count];
double return_1 = 0;
double return_2 = 0;

        for (int i = 0; i < returnsArray.Count; i++)
        {
            for (int j = 0; j < returnsArray[i].Count - 1; j++)
            {
                return_1 = returnsArray[i][j + 1];
                return_2 = returnsArray[i][j];
                tempGeometricReturns[j] = ((return_1 - return_2) / return_2) * 100;
            }
            geometricReturnsArray[i] = tempGeometricReturns;
        }

我在代码中面临的问题是 tempGeometricReturns 随着 i 的增加而不断被重新分配。所以最后,geometricReturnsArray 的所有三个数组都具有完全相同的值,因为 tempGeometricReturns 被重新分配,geometricReturnsArray.

中的先前值也是如此

我也尝试使用列表,但后来我只得到一个包含 267 个值的长列表,而我更喜欢三个长度为 90 的数组。我还能尝试做什么?

在您的示例中,您最终会在 geometricReturnsArray 中多次引用同一数组。数组是引用类型,所以赋值只复制引用,而不是整个数组。

修复方法是为每个外循环创建一个新数组,例如在执行赋值时复制现有数组

        }
            geometricReturnsArray[i] = tempGeometricReturns.ToArray();
    }

for (int i = 0; i < returnsArray.Count; i++)
{
    double[] tempGeometricReturns = new double[returnsArray[0].Count];
    for (int j = 0; j < returnsArray[i].Count - 1; j++)
    {