首页 新闻 会员 周边

C#多级数组 奇怪的写法

0
悬赏园豆:10 [已解决问题] 解决于 2020-10-17 09:30
int[][,][,,] a = new int[1][,][,,];

上述就是C#定义多级数组的写法!
这个写法很奇怪!!!

我本来想表达:
假设
obj=int[][,]
然后
obj[,,] 定义一个三维的obj数组

但C#实际表达的是:

通过
a.GetType().Name 得到的结果是:Int32[,,][,][]

对C#表示无力吐槽!!!

哪个大佬能解释一下C#为什么这么设计?

南语喃的主页 南语喃 | 菜鸟二级 | 园豆:306
提问于:2020-10-16 10:36
< >
分享
最佳答案
2

你这说的不清不楚的
你是不是觉得 声明一个数组就是在类型后面加方括号,像这样

// 声明一个包含三个数字的数组
var arr = new int[3];

然后声明数组的数组应该是再往后加方括号

// 声明一个包含三个数组的数组,错误的写法
var arr = new int[][3];

为什么实际是这种写法:

// 声明一个包含三个数组的数组,正确的写法
var arr = new int[3][];

为什么顺序反过来了对吧?因为他的逻辑根本就是多维数组的逻辑,按照第一维第二维第三维这样的顺序排的,这个语法顺序跟

var arr = new int[3,4,5];

保持一致。

收获园豆:10
拓拓 | 小虾三级 |园豆:1050 | 2020-10-16 13:42

但是 a.GetType().Name 得到的结果却是:Int32[,,][,][]
实际类型名称符合数组逻辑,而写法却按照[,,,]的顺序来,个人认为这是很不合理的。吐槽一下。

南语喃 | 园豆:306 (菜鸟二级) | 2020-10-17 09:52
其他回答(1)
0

你的問題是什麼

RosonJ | 园豆:4910 (老鸟四级) | 2020-10-16 10:55

我想说C#这个语法有问题,想知道为什么这么设计。有点违反逻辑。

支持(0) 反对(0) 南语喃 | 园豆:306 (菜鸟二级) | 2020-10-16 12:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册