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

时间:2016-01-12 01:52:04

标签: c# arrays multidimensional-array initialization indexoutofrangeexception

我有一个二维数组定义为

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;
    }

1 个答案:

答案 0 :(得分:2)

您获得了索引例外,因为new int[,]至少与array1一样大。与您的声明相反,您可以使用array1的维度来定义array2。使用:

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

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