锯齿状阵列

锯齿状数组是代替基本类型的数组,包含数组(或其他集合)。它就像一个数组数组 - 每个数组元素包含另一个数组。

它们类似于多维数组,但略有不同 - 因为多维数组仅限于固定数量的行和列,使用锯齿状数组,每行可以有不同数量的列。

声明锯齿状阵列

例如,声明一个包含 8 列的锯齿状数组:

int[][] a = new int[8][];

第二个 [] 初始化没有数字。要初始化子数组,你需要单独执行此操作:

for (int i = 0; i < a.length; i++) 
{
    a[i] = new int[10];
}

获取/设置值

现在,获得一个子阵列很容易。让我们打印 a 第 3 列的所有数字:

for (int i = 0; i < a[2].length; i++)
{
    Console.WriteLine(a[2][i]);
}

获得特定价值:

a[<row_number>][<column_number>]

设置特定值:

a[<row_number>][<column_number>] = <value>

记住 :始终建议使用锯齿状数组(数组数组)而不是多维数组(矩阵)。它使用起来更快,更安全。

关于括号顺序的注释

考虑一个 int 的一维阵列的五维阵列的三维阵列。这是用 C#编写的:

int[,,][,,,,][] arr = new int[8, 10, 12][,,,,][];

在 CLR 类型系统中,括号排序的约定是相反的,因此对于上面的 arr 实例,我们有:

    arr.GetType().ToString() == "System.Int32[][,,,,][,,]"

同样地:

    typeof(int[,,][,,,,][]).ToString() == "System.Int32[][,,,,][,,]"