锯齿状阵列
锯齿状数组是代替基本类型的数组,包含数组(或其他集合)。它就像一个数组数组 - 每个数组元素包含另一个数组。
它们类似于多维数组,但略有不同 - 因为多维数组仅限于固定数量的行和列,使用锯齿状数组,每行可以有不同数量的列。
声明锯齿状阵列
例如,声明一个包含 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[][,,,,][,,]"