C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)
数组是变量的索引列表,可以在方括号中指定索引来访问数组中的各个成员,其中索引是一个整数,从0开始。
一维数组
多维数组(矩形数组)
数组的数组(锯齿数组)
数组必须在访问之前初始化,数组的初始化有两种方式,可以以字面的形式指定数组的内容,也可以使用new关键词显式的初始化数组;
1 2 3 | int [] arr = { 1, 2, 3 }; int [] arr1 = new int [3]; |
数组类型是从抽象基类型 Array 派生的引用类型。由于此类型实现了 IEnumerable ,因此可以对 C# 中的所有数组使用 foreach 迭代,foreach循环对数组内容进行只读访问,所以不能改变任何元素的值。
1 2 3 4 5 6 7 8 9 10 11 12 13 | int [] arr = { 1, 2, 3 }; foreach ( var item in arr) { Console.WriteLine(item); } Array arr2 = Array.CreateInstance( typeof ( int ), 3); arr2.SetValue(1, 0); arr2.SetValue(2, 1); arr2.SetValue(3, 2); foreach ( var item1 in arr2) { Console.WriteLine(item1); } |
多维数组是使用多个索引访问其元素的数组,下面以二维数组为例:
1 2 3 4 5 6 7 8 | int [,] arr = { { 1, 2 }, { 4, 5 }, { 7, 8 } }; int [,] arr1 = new int [3, 2]; arr1[0, 0] = 1; arr1[0, 1] = 2; foreach ( var item in arr) { Console.WriteLine(item); } |
方括号中的第一个数字指定花括号对,第二个数字花括号中的元素
锯齿数组:该数组中的每个元素都是另外一个数组, 每行都有不同的元素个数,
int[][] a = new int[2][]; a[0] = new int[3]; a[1] = new int[4]; int[][] b = new int[2][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7 } }; int[][] c = { new int[3] { 1, 2, 3 }, new int[4] { 4, 5, 6, 7 } }; //锯齿数组的访问 int[][] a = { new int[3] { 1, 2, 3 }, new int[4] { 4, 5, 6, 7 } }; foreach (var item in a) { foreach (var item1 in item) { Console.WriteLine(item1); } } Console.WriteLine("----------------------------------"); for (int i = 0; i < a.Length; i++) { for (int j = 0; j < a[i].Length; j++) { Console.WriteLine(a[i][j]); } }
锯齿数组的初始化:
-
数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。
-
交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null。