应为嵌套数组初始值设定项

本文关键字:嵌套 数组 | 更新日期: 2023-09-27 18:29:48

我正在尝试制作一个数组,在一行中包含6个字符串,在那之后还有许多其他行。这是我的代码:

string[, , , , , ,] conj = new string[,,,,,,] {
        {"aimer", "aime", "aimes", "aime", "aimons", "aimez", "aiment"},
};

我得到错误"需要嵌套数组初始值设定项"。我以前从未做过这么大的数组,在谷歌上也找不到任何关于我为什么会出现这个错误以及我需要做些什么来解决这个问题的信息。

谢谢你的帮助!

应为嵌套数组初始值设定项

您正在尝试初始化一个多维矩形数组(7维!)。

所以。。。

// 1D array containing 2 elements:
int[]  r1d = { 1 , 2 , } ;
// 2x3 array containing 6 elements:
int[,] r2d = {
               { 1 , 2 , 3 , } ,
               { 4 , 5 , 6 , } ,
             } ;
// a 2x3x4 array
int[,,] r3d = {
                {
                  {  1 ,  2 ,  3 ,  4 , } ,
                  {  5 ,  6 ,  7 ,  8 , } ,
                  {  9 , 10 , 11 , 12 , } ,
                } ,
                {
                  { 13 , 14 , 15 , 16 , } ,
                  { 17 , 18 , 19 , 20 , } ,
                  { 21 , 22 , 23 , 24 , } ,
                } ,
              } ;

人们可能会看到一种模式在这里发展。您应该能够从这里获得它(提示:您将拥有嵌套7深的大括号)。

请注意,每个初始值设定项都必须具有相同的秩,以免编译器出错。例如,如果你说:

int[,,] r3d = {
                {
                  {  1 ,  2 ,  3 ,  4 , } ,
                  {  5 ,  6 ,  7 ,  8 , } ,
                  {  9 , 10 , 11 , 12 , } ,
                } ,
                {
                  { 13 , 14 , 15 , 16 , } ,
                  { 17 , 18 , 19 , 20 , } ,
                //{ 21 , 22 , 23 , 24 , } ,
                } ,
              } ;

编译器抱怨说,An array initializer of length '3' is expected。这是因为x3d[0,1]的初始化器初始化器不一致。

您的数组定义string[, , , , , ,]不应该有任何逗号。改为执行string[]

数组[]是事物的列表。你所拥有的被称为矩形阵列(尽管这个定义可能不再适用于那么多维度)。对于一个更简单的例子:[,](实际上是一个矩形数组),您得到的更类似于项目的"网格",而不是列表。