如何在运行时间分配二维数组的大小?

How to assign the size of a two dimensional array at run time?

我有一个二维数组定义如下

int[,] array1 = new int[,]{{1,0},{3,5},{2,5},{8,7}}; 

或者我可以输入任何其他二维数组作为array1,也许

array1 = new int[6,2]...

我想定义另一个 array2,它也是一个二维数组,我需要 array2 在两个维度上的长度都与 array1 相同。我不能将 array2 定义为

new int[array1.GetLength(0), array1.GetLength(1)]

我该如何定义它?如果我在代码下方 运行 时将其保留为 new int[,],我将退出索引异常,我认为该异常是有意义的。

for (int i = 0; i < array1.GetLength(0); i++)
    for (int j = 0; j < array1.GetLength(1); j++)
    {
        if (array1[i, j] == -1)
            array2[i, j] = i+j;
    }

您得到索引异常是因为您的 new int[,] 至少没有 array1 大。与您的声明相反,您可以使用 array1 的维度长度定义 array2。使用:

int[,] array2 = new int[array1.GetLength(0),array1.GetLength(1)];

这会将 array2 设置为与 array1 相同的维度,并且 array1 的任何有效元素都将对 array2 有效,因此您不会获得索引异常.