C#交错数组
1、声明交错数组
交错数组的声明语法如下所示:data_type[][] array_name;
假如要声明一个具有三个元素的一维交错数组,并且数组中的每个元素都是一个一维的整型数组,示例代码如下:int[][] jaggedArray = new int[3][];
2、初始化交错数组
和普通数组相同,交错数组也需要初始化后才可以使用,可以使用下面的方式初始化一个交错数组。
int[][] jaggedArray = new int[3][]; // 定义一个交错数组
jaggedArray[0] = new int[5]; // 对数组的第一个元素初始化
jaggedArray[1] = new int[4]; // 对数组的第二个元素初始化
jaggedArray[2] = new int[2]; // 对数组的第三个元素初始化
除了上面的方法外,还可以直接使用具体的值来填充数组,这种情况下就不需要再设定数组的大小了,如下所示:
int[][] jaggedArray = new int[3][]; // 定义一个交错数组
jaggedArray[0] = new int[] {1, 2, 3, 4, 5};
jaggedArray[1] = new int[] {6, 7, 8, 9};
jaggedArray[2] = new int[] {10, 11};
int[][] jaggedArray = new int[][]{
new int[] {1, 2, 3, 4, 5},
new int[] {6, 7, 8, 9},
new int[] {10, 11}
};
int[][] jaggedArray = {
new int[] {1, 2, 3, 4, 5},
new int[] {6, 7, 8, 9},
new int[] {10, 11}
};
注意:不能从元素初始化中省略 new 运算符,因为不存在元素的默认初始化。
3、访问数组中的元素
以上面定义的交错数组 jaggedArray 为例,可以使用如下所示的方法来获取数组的中每个元素或者为指定的元素赋值:
int a = jaggedArray[0][1] // 变量 a 的值为:2
jaggedArray[2][1] = 0 // 将交错数组中第三个数组元素中的第二个元素赋值为 0
4、交错数组和多维数组
交错数组中的元素不仅可以是一维数组,还可以是多维数组,例如下面的代码中定义了一个包含三个二维数组元素的一维交错数组:
int[][,] jaggedArray = new int[3][,]
{
new int[,] {
{1, 1},
{2, 3}
},
new int[,] {
{5, 8},
{13, 21},
{34, 55}
},
new int[,] {
{89, 144},
{233, 377},
{610, 987}
}
};
int a = jaggedArray[1][1,1] // 变量 a 的值为 21
int b = jaggedArray[2][0,0] // 变量 b 的值为 89
using System; namespace c.biancheng.net { class Demo { static void Main(string[] args){ int[][] arr = new int[3][]{ new int[]{31, 22, 16, 88}, new int[]{21, 54, 6, 77, 98, 52}, new int[]{112, 25} }; // 遍历数组 for(int i = 0; i < arr.Length; i++){ for(int j = 0; j < arr[i].Length; j++){ Console.Write(arr[i][j]+" "); } Console.WriteLine(); } Console.ReadLine(); } } }运行结果如下:
31 22 16 88
21 54 6 77 98 52
112 25
提示:示例中用到了 Length 属性,它是数组的一个属性,代表数组的长度(元素个数)。
【示例】使用交错数组记录学生不同学科的成绩:using System; namespace c.biancheng.net { class Demo { static void Main(string[] args){ string[] names = {"小明","小红","小强"}; string[] course = {"语文","数学","英语"}; int[][] achievement = { new int[]{98, 85, 90}, new int[]{91, 95, 93}, new int[]{88, 89, 97}, }; for(int i = 0; i < names.Length; i++){ string str = ""; for(int j = 0; j < achievement[i].Length; j++){ str += course[j] + " " + achievement[i][j] + ","; } Console.WriteLine("{0}的成绩为:{1}", names[i], str); } Console.ReadLine(); } } }运行结果如下:
小明的成绩为:语文 98,数学 85,英语 90,
小红的成绩为:语文 91,数学 95,英语 93,
小强的成绩为:语文 88,数学 89,英语 97,