C#中的数组
一维数组:
可以如下例所示声明一个由 5 个整数组成的数组:
int[] myArray = new int [5];
此数组包含从 myArray[0] 到 myArray[4] 的元素。new
运算符用于创建数组并将数组元素初始化为它们的默认值。在此例中,所有数组元素都初始化为零。
可以用相同的方式声明存储字符串元素的数组。例如:
string[] myStringArray = new string[6];
数组初始化
可以在声明数组时将其初始化,在这种情况下不需要级别说明符,因为级别说明符已经由初始化列表中的元素数提供。例如:
int[] myArray = new int[] {1, 3, 5, 7, 9};
可以用相同的方式初始化字符串数组。下面声明一个字符串数组,其中每个数组元素用每天的名称初始化:
string[] weekDays = new string[] {"Sun","Sat","Mon","Tue","Wed","Thu","Fri"};
如果在声明数组时将其初始化,则可以使用下列快捷方式:
int[] myArray = {1, 3, 5, 7, 9};
string[] weekDays = {"Sun","Sat","Mon","Tue","Wed","Thu","Fri"};
可以声明一个数组变量但不将其初始化,但在将数组分配给此变量时必须使用 new 运算符。例如:
int[] myArray;
myArray = new int[] {1, 3, 5, 7, 9}; // OK
myArray = {1, 3, 5, 7, 9}; // Error
值类型数组和引用类型数组
请看下列数组声明:
MyType[] myArray = new MyType[10];
该语句的结果取决于 MyType 是值类型还是引用类型。如果是值类型,则该语句将创建一个由 10 个 MyType 类型的实例组成的数组。如果 MyType 是引用类型,则该语句将创建一个由 10 个元素组成的数组,其中每个元素都初始化为空引用。
有关值类型和引用类型的更多信息,请参见类型。
将数组作为参数传递
可以将初始化的数组传递给方法。例如:
PrintArray(myArray);
也可以在一个步骤中初始化并传递新数组。例如:
PrintArray(new int[] {1, 3, 5, 7, 9});
示例
在下例中,初始化一个字符串数组并将其作为参数传递给 PrintArray 方法(该数组的元素显示在此方法中):
int[] myArray = {1, 3, 5, 7, 9};
string[] weekDays = {"Sun","Sat","Mon","Tue","Wed","Thu","Fri"};
可以声明一个数组变量但不将其初始化,但在将数组分配给此变量时必须使用 new 运算符。例如:
int[] myArray;
myArray = new int[] {1, 3, 5, 7, 9}; // OK
myArray = {1, 3, 5, 7, 9}; // Error
值类型数组和引用类型数组
请看下列数组声明:
MyType[] myArray = new MyType[10];
该语句的结果取决于 MyType 是值类型还是引用类型。如果是值类型,则该语句将创建一个由 10 个 MyType 类型的实例组成的数组。如果 MyType 是引用类型,则该语句将创建一个由 10 个元素组成的数组,其中每个元素都初始化为空引用。
有关值类型和引用类型的更多信息,请参见类型。
将数组作为参数传递
可以将初始化的数组传递给方法。例如:
PrintArray(myArray);
也可以在一个步骤中初始化并传递新数组。例如:
PrintArray(new int[] {1, 3, 5, 7, 9});
示例
在下例中,初始化一个字符串数组并将其作为参数传递给 PrintArray 方法(该数组的元素显示在此方法中):
1 // cs_sd_arrays.cs 2 using System; 3 public class ArrayClass 4 { 5 static void PrintArray(string[] w) 6 { 7 for (int i = 0 ; i < w.Length ; i++) 8 Console.Write(w[i] + "{0}", i < w.Length - 1 ? " " : ""); 9 Console.WriteLine(); 10 } 11 12 public static void Main() 13 { 14 // Declare and initialize an array: 15 string[] WeekDays = new string [] 16 {"Sun","Sat","Mon","Tue","Wed","Thu","Fri"}; 17 18 // Pass the array as a parameter: 19 PrintArray(WeekDays); 20 } 21 } 22 输出 23 Sun Sat Mon Tue Wed Thu Fri
多维数组
数组可以具有多个维度。例如,下列声明创建一个四行两列的二维数组:
int[,] myArray = new int[4,2];
另外,下列声明创建一个三维(4、2 和 3)数组:
int[,,] myArray = new int [4,2,3];
数组初始化
可以在声明数组时将其初始化,如下例所示:
int[,] myArray = new
int[,] {{1,2}, {3,4}, {5,6},
{7,8}};
也可以初始化数组但不指定级别:
int[,] myArray = {{1,2}, {3,4}, {5,6}, {7,8}};
如果要声明一个数组变量但不将其初始化,必须使用 new 运算符将数组分配给此变量。例如:
int[,] myArray;
myArray = new int[,] {{1,2}, {3,4}, {5,6}, {7,8}}; // OK
myArray = {{1,2}, {3,4}, {5,6}, {7,8}}; // Error
也可以给数组元素赋值,例如:
myArray[2,1] = 25;
将数组作为参数传递
可以将初始化的数组传递给方法。例如:
PrintArray(myArray);
也可以在一个步骤中初始化并传递新数组。例如:
PrintArray(new int[,] {{1,2}, {3,4}, {5,6}, {7,8}});
示例
在此示例中,初始化一个二维数组并将其传递给 PrintArray 方法(该数组的元素显示在此方法中)。
也可以初始化数组但不指定级别:
int[,] myArray = {{1,2}, {3,4}, {5,6}, {7,8}};
如果要声明一个数组变量但不将其初始化,必须使用 new 运算符将数组分配给此变量。例如:
int[,] myArray;
myArray = new int[,] {{1,2}, {3,4}, {5,6}, {7,8}}; // OK
myArray = {{1,2}, {3,4}, {5,6}, {7,8}}; // Error
也可以给数组元素赋值,例如:
myArray[2,1] = 25;
将数组作为参数传递
可以将初始化的数组传递给方法。例如:
PrintArray(myArray);
也可以在一个步骤中初始化并传递新数组。例如:
PrintArray(new int[,] {{1,2}, {3,4}, {5,6}, {7,8}});
示例
在此示例中,初始化一个二维数组并将其传递给 PrintArray 方法(该数组的元素显示在此方法中)。
1 // cs_td_arrays.cs 2 using System; 3 public class ArrayClass 4 { 5 static void PrintArray(int[,] w) 6 { 7 // Display the array elements: 8 for (int i=0; i < 4; i++) 9 for (int j=0; j < 2; j++) 10 Console.WriteLine("Element({0},{1})={2}", i, j, w[i,j]); 11 } 12 13 public static void Main() 14 { 15 // Pass the array as a parameter: 16 PrintArray(new int[,] {{1,2}, {3,4}, {5,6}, {7,8}}); 17 } 18 } 19 输出 20 Element(0,0)=1 21 Element(0,1)=2 22 Element(1,0)=3 23 Element(1,1)=4 24 Element(2,0)=5 25 Element(2,1)=6 26 Element(3,0)=7 27 Element(3,1)=8