首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我不能创建数组的多维数组?

为什么我不能创建数组的多维数组?
EN

Stack Overflow用户
提问于 2019-05-26 23:55:57
回答 1查看 140关注 0票数 0

我的程序涉及一个二维板:Square[width,height]。每个正方形都包含一个棋子的集合。

在表示层中,我只想表示每个Square中的块集合,并用它的字符串名称表示每个块。即string[][width,height]

声明string[][,]编译没有问题,但是我不能初始化变量:

代码语言:javascript
复制
string[][,] multiArrayOfArrays; //No problemo
multiArrayOfArrays = new string[][8,8]; //Generates errors

将为第二行生成以下错误:

代码语言:javascript
复制
CS1586  Array creation must have array size or array initializer    
CS0178  Invalid rank specifier: expected ',' or ']' ModChess    
CS0178  Invalid rank specifier: expected ',' or ']' ModChess    

我目前正在使用List<string>[,]作为变通方法,但是这些错误让我很恼火。为什么我可以成功声明string[][,]但不能初始化它?注意:使用VS社区16.0.4,C# 7.3。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 00:32:37

也许你想要一个string[,][] a

代码语言:javascript
复制
string[,][] a = new string[3, 4][];
a[0, 0] = new string[10];
a[0, 1] = new string[4];
a[1, 0] = new string[6];
string s = a[0, 0][2];

您有一种特殊情况的锯齿数组,其中第一个数组是二维的。它包含不同大小的一维数组作为元素。

数组括号的顺序可能看起来是错误的,因为元素类型通常在括号的左侧;但是,如果您考虑如何访问元素,那么它是有意义的。首先,您希望指定二维板的2个坐标,然后指定块集合的单个索引。

根据Jagged Arrays (C# Programming Guide)的说法,int[][,] jaggedArray4 = new int[3][,] "...是一维交错数组的声明和初始化,该数组包含三个大小不同的二维数组元素。“

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档