详解C#编程中一维数组与多维数组的使用
一维数组
可按下面的示例所示声明五个整数的一维数组。
int[]array=newint[5];
此数组包含从array[0]到array[4]的元素。new运算符用于创建数组并将数组元素初始化为它们的默认值。在此例中,所有数组元素都初始化为零。
可以用相同的方式声明存储字符串元素的数组。例如:
string[]stringArray=newstring[6];
数组初始化
可以在声明数组时将其初始化,在这种情况下不需要级别说明符,因为级别说明符已经由初始化列表中的元素数提供。例如:
int[]array1=newint[]{1,3,5,7,9};
可以用相同的方式初始化字符串数组。下面声明一个字符串数组,其中每个数组元素用每天的名称初始化:
string[]weekDays={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
如果在声明数组时将其初始化,则可以使用下列快捷方式:
int[]array2={1,3,5,7,9}; string[]weekDays2={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
可以声明一个数组变量但不将其初始化,但在将数组分配给此变量时必须使用new运算符。例如:
int[]array3; array3=newint[]{1,3,5,7,9};//OK //array3={1,3,5,7,9};//Error
值类型数组和引用类型数组
请看下列数组声明:
SomeType[]array4=newSomeType[10];
该语句的结果取决于SomeType是值类型还是引用类型。如果为值类型,则语句将创建一个有10个元素的数组,每个元素都有SomeType类型。如果SomeType是引用类型,则该语句将创建一个由10个元素组成的数组,其中每个元素都初始化为空引用。
多维数组
数组可以具有多个维度。例如,下列声明创建一个四行两列的二维数组。
int[,]array=newint[4,2];
下列声明创建一个三维(4、2和3)数组。
int[,,]array1=newint[4,2,3];
数组初始化
可以在声明数组时将其初始化,如下例所示。
//Two-dimensionalarray. int[,]array2D=newint[,]{{1,2},{3,4},{5,6},{7,8}}; //Thesamearraywithdimensionsspecified. int[,]array2Da=newint[4,2]{{1,2},{3,4},{5,6},{7,8}}; //Asimilararraywithstringelements. string[,]array2Db=newstring[3,2]{{"one","two"},{"three","four"}, {"five","six"}}; //Three-dimensionalarray. int[,,]array3D=newint[,,]{{{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}}; //Thesamearraywithdimensionsspecified. int[,,]array3Da=newint[2,2,3]{{{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}}; //Accessingarrayelements. System.Console.WriteLine(array2D[0,0]); System.Console.WriteLine(array2D[0,1]); System.Console.WriteLine(array2D[1,0]); System.Console.WriteLine(array2D[1,1]); System.Console.WriteLine(array2D[3,0]); System.Console.WriteLine(array2Db[1,0]); System.Console.WriteLine(array3Da[1,0,1]); System.Console.WriteLine(array3D[1,1,2]); //Gettingthetotalcountofelementsorthelengthofagivendimension. varallLength=array3D.Length; vartotal=1; for(inti=0;i<array3D.Rank;i++){ total*=array3D.GetLength(i); } System.Console.WriteLine("{0}equals{1}",allLength,total);
输出:
1 2 3 4 7 three 8 12 12equals12
也可以初始化数组但不指定级别。
int[,]array4={{1,2},{3,4},{5,6},{7,8}};如果选择声明一个数组变量但不将其初始化,必须使用new运算符将一个数组分配给此变量。以下示例显示new的用法。
int[,]array5; array5=newint[,]{{1,2},{3,4},{5,6},{7,8}};//OK //array5={{1,2},{3,4},{5,6},{7,8}};//Error
以下示例将值分配给特定的数组元素。
array5[2,1]=25;
同样,下面的示例获取特定数组元素的值,并将它赋给变量elementValue。
intelementValue=array5[2,1];
以下代码示例将数组元素初始化为默认值(交错数组除外):
int[,]array6=newint[10,10];