无法实例化具有动态大小的二维数组

时间:2013-12-25 08:54:01

标签: c# visual-studio

我创建了一个带有2d整数数组的类作为成员。我想要的是,当我通过构造函数实例化x实例时,该成员被x矩阵动态分配为truck。这是我的代码:

public class truck
{
    public int[][] mat;
    truck(int x)
    {
       mat = new int[x][x];
        for(int i=0;i<x;i++)
            for(int j=0;j<x;j++)
                mat[i][j]=0;
    }
}

它给了我以下错误:

  

无效的排名说明符:预期','或']'

就在这一行:mat = new int[x][x];

为什么它会给我这个错误?

2 个答案:

答案 0 :(得分:3)

您无法像这样初始化jagged array。您必须先初始化第一个维度,然后初始化元素:

mat = new int[x][];
//now you can do this:
mat[0] = new int[x];
...

也许您想要一个multidimensional数组?

public int[,] mat;
...
mat = new int[x,x];

答案 1 :(得分:1)

通过使用[][],您可以创建一个数组数组。这意味着第一维的每个元素都包含一个数组 这就是为什么你需要初始化x数组而不只是一个。
你可以通过以下方式做到:

for (int i=0; i<x; i++) mat[i] = new int[x];

如果您只需创建二维矩阵,则可以使用int[,]代替int[][]。在这种情况下,您可以像mat = new int[x,x]

一样初始化它