数组的数组“新”语法是倒退的?

问题描述 投票:0回答:1

在 C# 中,当您“新建”一个数组时,它看起来像这样:

int[] someArray = new int[5];

可以读作:

int-array someArray = new int-array-of-size-5

今天随便试了下这样创建数组数组,直观感觉:

int[][] someArray = new int[][5];

我会读作:

int-array-array someArray = new int-array-array-with-size-5

然而,在得到一个令人困惑的错误并用谷歌搜索后,我发现语法是这样的

int[][] someArray = new int[5][];

我读作:

int-array-array someArray = new int-array-with-size-5-array

???我不是在创建一个大小为 5 的整数数组,而是在创建一个大小为 5 的整数数组。

我的问题是: 我理解正确吗?如果是这样,为什么会这样?如果不是,我该如何理解?


亲密选民注意: 这个问题不是基于意见的。问题的两个部分都有一个单一的事实答案(“为什么会这样?”和“我理解正确吗?”)。答案是“因为 C# 开发人员想要避免怪异”和“不,你没有正确理解它”。如果您想继续投票结束,请评论原因。我不咬人。

c# arrays jagged-arrays
1个回答
1
投票

数组的数组
正如这篇博文所解释的那样,他们希望在创建数组和访问数组元素时保持括号的顺序相同。我会尝试总结一下。
当您访问这样的数组时:

array[1][2]

这意味着:获取索引 1 处的数组并获取索引 2 处该数组的元素。 所以,当创建数组时,你必须像这样初始化它:

new int[5][]

表示一个包含 5 个 int 数组的对象。 怪事是不可避免的。创建数组时括号的顺序很奇怪,或者访问数组时顺序很奇怪。最奇怪的选择是两次的顺序都不同。

© www.soinside.com 2019 - 2024. All rights reserved.