C# int[,] 和 int[][]

int[] 一维数组

int[,] 二维数组

int[] [] 交错数组 又称“数组的数组”


  一维数组声明与初始化

声明:  int[] a = new int[];

声明与初始化:  int array1 = new int[] {1,2,3,4};

         int array1 = {1,2,3,4};   //  快捷声明和初始化的方式

不初始化的情况下声明数组变量,但必须使用 new 运算符向此变量分配数组

    int[] array3;

    array3 = new int[] { 1, 3, 5, 7, 9 };   // OK

    // array3 = {1, 3, 5, 7, 9};    // Error


int[,]   二维数组        int[, , , ] 三维数组            多维数组

声明  int[,] array = new int[2,4]    int[,,,] array2 = new int[2,5,4]

声明初始化   int array2D = new int[,] { [1,2}, {3,4}, {3,5}}

        int[,] array2Da = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };

       int[, ,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };

       int[, , ] array3D =new int[2,2,3]{ { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };

如果选择在不初始化的情况下声明数组变量,则必须使用 new 运算符将数组赋予变量

    int[,] array5;

    array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // OK

    //array5 = {{1,2}, {3,4}, {5,6}, {7,8}};   // Error


交错数组元素的维度和大小可以不同。

声明:

int[][] jaggedArray = new int[3][];

初始化:

    jaggedArray[0] = new int[5];

    jaggedArray[1] = new int[4];

    jaggedArray[2] = new int[2];

第一个元素是由 5 个整数组成的数组,第二个是由 4 个整数组成的数组,而第三个是由 2 个整数组成的数组。

     int[][] jaggedArray = new int[][]{

    new int[]{1,3,4,5},

    new int[] {0,2,4},

    new int[] {2,4}

    };

或者

     int[][] jaggedArray ={

    new int[]{1,3,4,5},

    new int[] {0,2,4},

    new int[] {2,4}

    }


  多维数组与交错数组 理解上是没有多大的差异的,交错数组实际上实现了多维数组的差异化,使用的时候更加自由。

  在C#编译里面,多维数组和差异数组是无法隐性转换的。 作为参数的时候要注意统一。


微软使用手册       https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/arrays/single-dimensional-arrays