数组学习笔记
C#中数组都是对象,可以有各种方法和性质。实际上创建数组就是创建System.Array类型的对象。
数组的声明
类型 [] 数组名 可以用new关键字实例化数组
myArray=new int[6]; 这就为存有五个整数的数组分配了内存。
注意:数组第一个元素的索引值总是0;不能设置上下边界,也不能改变数组的大小。
数组的默认值与数组的类型有关,值类型的数组根据类型有默认值。数组中引用类型系统自动初始化为null,我们必须进行特地的初始化才能访问其元素。
下面两段程序可以帮助更好的理解数组是引用类型
程序1:
int [] myarry;
int [] copy;
myarry=new int [5];
copy=new int [5];
myarry[0]=3;
copy[0]=10;
copy=myarry;
Console.WriteLine(copy[0].ToString());
Console.Read();
程序2:
int [] myarry;
int [] copy;
myarry=new int [5];
copy=new int [5];
myarry[0]=3;
copy[0]=10;
copy=myarry.Clone();
Console.WriteLine(copy[0].ToString());
Console.Read();
两端程序的输出比较
程序1: 3
程序2: 3
虽然两个程序输出相同,但两个程序本质不同,程序1,2中
myarry=new int [5];
copy=new int [5];
都为两个数组分配了空间,程序1中copy虽然分配了空间,但后来copy接受了myarry的引用,使原来的失去了引用使用,就成了垃圾内存,会被CLR回收。这就造成了系统性能的损失,好的习惯是尽量避免这种无用的空间分配。而程序2中传递的是myarry的克隆,copy原来的空间接受了这个拷贝,所以没有变成垃圾。当然这个例子只是讲清了一小方面,是我自己结合别人的例子胡乱写得,欢迎朋友们指点。