C#Array类的使用
注意:用方括号表示数组是Array类中表示方法。其中Array类是个抽象类,所以不能使用构造函数创建数组。
一、创建数组
创建数组的第二种方法:
第一种方法在前面已经介绍了:
in[][] twoArray=
{
new int[] {1},
new int[] {2,3,4},
new int[]{5,6}
};
下面介绍第二种方法,即利用Array类中的静态方法 CreateInstance()创建数组。此方法对于事先不知道数组的数据类型尤为有效。 因为类型可以做为参数传递给CreateInstance()方法中。
例:
Array intArray = Array.CreateInstance(typeof(int), 5);
//创建一个数组,其类型为int,数据长度为5
intArray.SetValue(0,0); //设置数组元素的值
intArray.SetValue(1,1); //其中第一个元素指的是值,第二个元素值得是索引
intArray.SetValue(2,2);
intArray.SetValue(3,3);
intArray.SetValue(4,4);
for (int i = 0; i < intArray.Length;i++ )
{
Console.WriteLine("这是Array类的表达方式"+intArray.GetValue(i));
//读取数组用GetValue(),其中参数为索引
}
二、复制数组
复制数组指的是将一个数组中所有的元素复制一遍,并在内存中重新分配数据空间。
这一点和数组的赋值不一样。如下:
赋值:
int[] IntArray = { 1,2,3,4,5,6}; //声明一个数组IntArray的值为指向托管堆中一组数据的引用
int[] CopyIntArray = IntArray; //将数组名赋值给CopyIntArray,此时CopyIntArray存储的和IntArray内存储的值一样都是指向托管堆中的一组数据的引用
上述的方式并不是复制数组,而只是创建了一个新的指向同一托管堆内存的引用而已。
复制:
int[] IntArray={1,2.3};
int[] CopyIntArray2 = (int[])IntArray.Clone(); //赋值数组,此时在托管堆内会创建一个新的内存,存储新的值。这是一种真正意义的赋值
如果数组的内容是引用,则复制数组后产生的复制副本存储也是引用而不是数据。
int[][] juchiArray=
{
new int[]{1},
new int[]{2,3,4},
new int[]{5,6,7,8,9}
};
int[][] CopyJcArray = (int[][])juchiArray.Clone(); //锯齿数据的复制后,新数组内存储的仍然是引用
int[] LuanSort ={1,6,1,3,2,5,9};
foreach (int i in LuanSort)
{
Console.WriteLine("未排序前的数据为:"+i);
}
Array.Sort(LuanSort);
foreach (int i in LuanSort)
{
Console.WriteLine("排序后的数据为:" + i);
}
//数组排序的方法是Array类的静态方法。