1.1.4 数组类型
数组类型是由抽象基类System.Array派生的引用类型,它代表一组相同类型变量的集合,其中的每一个变量称为数组的元素。数组元素可以为任意类型,包括数组类型。对数组元素的访问是通过数组下标来实现的。C#数组的下标从0开始,即第一个元素对应的下标是0,以后元素下标逐个递增。C#的数组定义要注意如下的事项。
● 在声明一个数组时,方括号必须跟在类型后面,而不能跟在变量名后面,例如:"int[] color;" 不能写成 "int color[];"。
● 可以不指定数组的大小,这样可以指定任意长度的数组,例如:
int[] color;。
当然,也可以指定数组的长度,如:
int[5] color;
● 可以声明包含数组的数组,即交错数组。
在C#中,支持的数组包括:一维数组、多维数组(矩形数组)和数组的数组(交错数组)。
1.一维数组和多维数组
声明一个由3个整型元素组成的一维数组如下。
int[] a=new int[3];
为每个数组元素赋值,以完成初始化。
a[0]=1; a[1]=2; a[2]=3;
声明一个2行2列的二维数组如下。
int[,] a=new int[2,2];
为每个数组元素赋值,以完成初始化。
a[0,0]=1; a[0,1]=2; a[1,0]=3; a[1,1]=4;
声明一个三维(3、2和2)数组如下。
int[,,] b=new int[3,2,2];
可以在声明数组时直接将其初始化,这时不需要指明数组的长度,也可以指明数组的大小,如:
// 声明一个含3个元素的一维整型数组
int[] b=new int[]{1 , 2 , 3}; int[] b=new int[3]{1 , 2 , 3}; int[] b={1 , 2 , 3}; // 含3个元素的一维字符串数组 string[] c={"one" , "two" , "three"}; string[] c=new string[3] {"one" , "two" , "three"}; // 含6个元素的二维整型数组 int[,] c=new int[,]{{1 , 2} , {3 , 4} , {5 , 6}}; // 含6个元素的二维字符串数组 string[,] d=new string[,]{{"one","two"},{"three","four"},{"five","six"}}; string[,] d={{"one","two"},{"three","four"},{"five","six"}};
也可以先声明一个数组变量,然后再初始化,这时必须使用new运算符。例如:
int[]d; // 先声明一维数组变量 d=new int[]{1,2,3}; // 再初始化 d={1,2,3}; // 错误,没有使用new运算符 int[,]e; // 先声明二维数组变量 e=new int[,]{{1,2},{3,4},{5,6}}; //再初始化
[示例Example1_1_3] 使用多维数组
using System; class TestMutiArray { public static void Main() { string[] course={"C#","Data Structure","Software engineering"}; Disp(course); } static void Disp(string[] arr) { for(int i=0; i<arr.length; i++) { Console.WriteLine("course[{0}]={1}", i, arr[i]); } } } 输出结果是 course[0]=C# course[1]=Data Structure course[2]=Software engineering
2.交错数组
交错数组是指数组元素又是一个数组,即数组的数组。
声明一个由3个元素组成的一维数组,其中每个元素又是一个一维整型数组,如下:
int[][] a=new int[3][];
必须初始化a的元素后才可以使用它。初始化元素如下所示:
a[0]=new int[3]; a[1]=new int[2]; a[2]=new int[2];
每个元素又是一个一维整型数组。第一个元素a[0]是由3个整数组成的一维数组,第二个元素a[1]是由2个整数组成的一维数组,而第三个元素a[2]是由2个整数组成的一维数组。
也可以直接初始化数组元素,在这种情况下不需要数组大小,例如:
a[0]=new int[] {1, 3, 5}; a[1]=new int[] {0, 2}; a[2]=new int[] {10, 20};
也可以在声明数组时将其初始化,例如:
int[][] a=new int[][] { new int[] {1, 3, 5}, new int[] {0, 2}, new int[] {10, 20} };
[示例Example1_1_4] 使用交错数组
using System; class TestJagArray { static void Main(string[] args) { int[][] jagArray=new int[2][]; jagArray[0]=new int[5]; jagArray[1]=new int[3]; //Assign value to each member of JagArray for(int i=0; i < jagArray.GetLength(0); i++) { for(int j=0; j < jagArray[i].Length; j++) jagArray[i][j]=i+j; } //Read value of each member of JagArray for(int k=0; k < 2; k++) { Console.WriteLine("jagArray[{0}]: ", k); for(int m=0; m < jagArray[k].Length; m++) Console.Write("{0,-3}", jagArray[k][m]); Console.WriteLine(); } } }
输出结果为
jagArray[0]: 0 1 2 3 4 jagArray[1]: 1 2 3