嵌套数组

要注意多维数组和嵌套数组二者之间的区别,嵌套数组也叫数组的数组,或者交错数组。通过以下方式来声明变量:

int[3][2] arr;

就是数组中的每个元素也是数组,也就是数组里面也包含数组。如:

            //嵌套数组
            char[][] ccs = new char[][]
            {
                new char[]{'a','b'},
                new char[]{'c','d'},
                new char[]{'e','f','g'}
            };

在上面的代码中,声明了一个嵌套数组,该数组从外到内有两层,最外层包含三个元素,而每个元素又是一个char数组。第一个char数组包含两个元素,第二个char数组也包含了两个元素,第三个char数组则包含了三个元素。
嵌套数组要比多维数组复杂,它是从外向内一层一层地进行嵌套。其实我们在声明嵌套数组时,可以通过中括号的对数来确定嵌套数组所包含的层数。例如,int[][]表示该数组包含两个层数组,int[][][]则表示其中包含三层数组。
下面用一个示例来演示一个三层嵌套的数组,嵌套数组变量的声明如下:

            //三层嵌套的数组
            int[][][] ints = new int[3][][]
            {
                new int[2][]
                {
                    new int[]{20,32,2},
                    new int[]{1,11,29,6}
                },
                new int[2][]
                {
                    new int[]{27,26,17},
                    new int[]{199}
                },
                new int[2][]
                {
                    new int[]{40,74,81},
                    new int[]{120,95}
                }
            };

该数组有三个层次(int[][][]),第一层有三个元素,每个元素又是一个两层嵌套的数组(int[][]);然后第二层中每个元素又是一个数组(int[]);到了第三层才是单个int数值。
然后,把这个嵌套数组的所有元素输出到屏幕。

            System.Console.WriteLine(ints.GetType().Name);
            for(int i = 0;i<ints.Length;i++)  //第一层
            {
                System.Console.WriteLine(" "+ints[i].GetType().Name);
                for(int j = 0;j<ints[i].Length;j++)  //第二层
                {
                    System.Console.WriteLine("  "+ints[i][j].GetType().Name);
                    Console.Write("   ");
                    for(int k = 0;k<ints[i][j].Length;k++)   //第三层
                    {
                        System.Console.Write(ints[i][j][k] + " ");
                    }
                    System.Console.WriteLine();
                }
            }

输出如下:

Int32[][][]
 Int32[][]
  Int32[]
   20 32 2 
  Int32[]
   1 11 29 6 
 Int32[][]
  Int32[]
   27 26 17 
  Int32[]
   199 
 Int32[][]
  Int32[]
   40 74 81 
  Int32[]
   120 95 

其实,嵌套数组的结构有些类似于Windows操作系统中的文件目录结构,把嵌套数组的层次与系统中的文件夹层次作类比。从外向内层层嵌套,而最后一层便是数组中的单个元素,类似于文件夹内部的单个文件。在实际开发过程中很少会使用嵌套数组,也不建议使用,如果对嵌套数组的层次结构理解不清楚的话,很容易造成不必要的错误;况且,为了方便他人阅读代码,也不宜将数组结构定义得过于复杂。
可查看另一篇博客:锯齿数组

你可能感兴趣的:(C#,C#,嵌套数组)