无效的排名说明符

Invalid rank specifier

我正在尝试使用基于图块的地图创建地牢爬虫。但是,在创建图块数组时出现错误。 (现在,Tile 是一个 class,只有一个空的构造函数。)

class Map
{
    Tile[][] Tiles;
    static const int DefaultWidth = 640, DefaultHeight = 480;
    Random rnd;

    public Map(int? Width, int? Height, int? seed)
    {
        Tiles = new Tile[((Width == null) ? DefaultWidth : (int)Width)]
        //This line gives the error "invalid rank specifier: expected ',' or ']'" after the first bracket
            [((Height == null) ? DefaultHeight : (int)Height)];
        Generate();
    }

    void Generate()
    {

    }
}

为什么会出现此错误?

在 C# 中,实例化二维数组的正确方法是使用逗号代替:

int[,] array = new [3,2];

您仍然可以创建诸如 int[][] 之类的数组,但是您需要使用 for 循环在其中创建每个单独的数组(长度可以不同),这称为锯齿状的阵列。但是,我建议使用逗号语法,因为它在 C# 中是惯用的,并且是预期的处理方式。