C#Array类

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类的静态方法。
发布了51 篇原创文章 · 获赞 0 · 访问量 883

猜你喜欢

转载自blog.csdn.net/weixin_40786497/article/details/103643561