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

本文关键字:二维数组 分配 运行时 | 更新日期: 2023-09-27 18:29:50

我有一个二维数组定义为这个

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有效,因此不会得到索引异常。