创建数组
Array 类是一个抽象类,所以不能使用构造函数来创建数组。但除了可以使用C#语法创建数组实例之外,还可以使用静态方法CreateInstance()创建数组。如果事先不知道元素的类型,就可以使用该静态方法,因为类型可以作为Type 对象传送给CreateInstance()方法。
下面的例子说明了如何创建类型为int、大小为5 的数组。CreateInstance()方法的第一个参数应是元素的类型,第二个参数定义数组的大小。可以用SetValue()方法设置值,用GetValue()方法读取值:Array intArray1 = Array.CreateInstance(typeof(int), 5);for (int i = 0; i < 5; i++){intArray1.SetValue(33, i);}for (int i = 0; i < 5; i++){Console.WriteLine(intArray1.GetValue(i));}
还可以将已创建的数组强制转换成声明为int[]的数组:int[] intArray2 = (int[])intArray1;CreateInstance()方法有许多重载版本,可以创建多维数组和不基于0 的数组。下面的例子就创建了一个包含2×3 个元素的二维数组。第一维基于1,第二维基于0:
int[] lengths = {2, 3};
int[] lowerBounds = {1, 10};
Array racers = Array.CreateInstance(typeof(Person), lengths,lowerBounds);
SetValue()方法设置数组的元素,其参数是每一维的索引:racers.SetValue(new Person("Alain", "Prost"), 1, 10);
racers.SetValue(new Person("Emerson", "Fittipaldi"), 1, 11);
racers.SetValue(new Person("Ayrton", "Senna"), 1, 12);
racers.SetValue(new Person("Ralf", "Schumacher"), 2, 10);
racers.SetValue(new Person("Fernando", "Alonso"), 2, 11);
racers.SetValue(new Person("Jenson", "Button"), 2, 12);
尽管数组不是基于0 的,但可以用一般的C#记号将它赋予一个变量。只需注意不要超出边界即可:Person[,] racers2 = (Person[,]) racers;Person first = racers2[1, 10];Person last = racers2[2, 12];
浙公网安备 33010602011771号