简单数组
即是一组相同类型数据(前两节课讲到的那些数据类型)组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素
下图显示系统内存中的数组结构,可以看到数组的下标是从0开始的。如图5-1
图5-1
也就是说,无论数组中的每一个项的值是多少,但是访问它的时候都是根据其所在的下标。而所谓的下标则是指在数组中的位置。这个下标是从0开始依次往后数的。
数组的申明
在声明数组时,应先定义数组中元素的类型,其后是一个空方括号和一个变量名。例如,下面声明了一个包含整型元素的数组:
string[] Mystr; //申明一个string类型的数组 int[] Myint; //申明一个int类型数组 |
数组的初始化
小天:这么简单就把一个装数据的容器就建立了?那接下来是否就需要初始化,也就是将数据放进去。
老田:是的。不过声明了数组后,就必须先为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。下面指定了数组的大小。
int[] myInt; //申明数组变量 myInt = new int[7]; //初始化数组 |
在声明和初始化后,变量myArray就有了指向6个整型值的引用,它们位于托管堆上。但是这个时候,已分配的内存空间中还是空的,如果是int这样的则会用0填充,如图5-1所示。
除了在两个语句中声明和初始化数组之外,还可以在一个语句中声明和初始化数组:
int[] myInt1 = new int[7]; |
还可以使用数组初始化器为数组的每个元素赋值。数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用,例如:
int[] myInt1 = new int[7] { 11, 12, 30, 53, 21, 38, 27 }; |
申明后的效果如图5-2,每个内存空间中放一个整数,而它们的下标从0开始,依次递增。
图5-2
如果用花括号初始化数组,还可以不指定数组的大小,因为编译器会计算出元素的个数,例如下面的写法,和上例效果一样:
int[] myInt2 = new int[] { 11, 12, 30, 53, 21, 38, 27 }; |
使用C#编译器还有一种更简化的形式。使用花括号可以同时声明和初始化数组,编译器生成的代码与前面的例子相同:
int[] myInt3 = { 11, 12, 30, 53, 21, 38, 27 }; |
本文章为天轰穿原创作品,转载请注明出处及作者。