前言
C# 中,数组是一种聚合类型,表示具有相同类型的一组对象的集合。数组是一种
引用类型,在作为函数参数传递时,为
按引用传递。
语法
一维数组
要创建一个数组对象,需要依据以下语法
<type> [] <name> = new <type>[<count>];
要初始化时,依次使用下标对数组元素赋值:
<name>[<index>] = <value>;
也可以在定义时初始化。以下三种方法等价:
int[] nums1 = new int[3];
nums1[0] = 1;
nums1[1] = 2;
nums1[2] = 3;
int[] nums2 = new int[] {
1, 2, 3
};
int[] nums3 = {
1, 2, 3
};
数组的访问要注意越界问题,编译期不会出错,但是运行期会出错。
要获得数组元素的个数,使用以下语法:
int n = <name>.Length;
C#数组有一个
只读属性Length,保存了数组的容量。
多维数组
int[,] n = new int[3, 2] { // 3行2列
{1, 2 },
{3, 4 },
{5, 6 },
};
多维数组的 .Length 属性保存的是整个数组的所有元素个个数。使用 GetLength() 方法可以返回每一个纬度的长度。
int[,] arr = new int[3, 2] {
{1, 2 },
{3, 4 },
{5, 6 },
};
int n1 = arr.Length; // 6
int n2 = arr.GetLength(0); // 3
int n3 = arr.GetLength(1); // 2
多维数组的同一个纬度的元素,必须有相同的纬度。所以,下面的代码会报错“应为一个长度为3的初始数组”
int[,] arr = new int[,] {
{1, 2, 3}, //
{3, 4 }, // 错误
{5, 6 }, // 错误
};
改正:
int[,] arr = new int[,] {
{1, 2, 3},
{3, 4, 3 },
{5, 6, 1 },
};
交错数组
int[][] jaggedArray = new int[3][];
int[][] jaggedArray2 = new int[][]
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
int[][] jaggedArray3 =
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
int[][,] jaggedArray4 = new int[3][,]
{
new int[,] { {1,3}, {5,7} },
new int[,] { {0,2}, {4,6}, {8,10} },
new int[,] { {11,22}, {99,88}, {0,9} }
};
上面的写法都是可行的。