第18章 数组
数组是程序设计中最常用的数据结构之一,它是具有相同数据类型的数据元素的有序集合。这里有几个关键字需要注意:
❑相同类型:数组中的数据元素类型都相同。
❑数据元素:数组中的数据项,可以是任何类型,数据元素的类型也代表该数组的类型。要访问数组中的某个数据元素,需要通过数组名称和位置索引进行访问。
❑有序:数组的有序是依据位置索引的,数组中的位置索引从0开始。例如,具有10个元素的数组,位置索引从0到9。因此,具有n个元素的位置索引从0到n-1。每个位置索引都对应一个数据元素,因此,数组是有序的。
❑集合:有两重含义。第一,一个数组是一组数据元素的集合,不像string类型那样一个变量只对应于一个数据(实际上一个string类型也包含一个字符的数组char[]);第二,数组是集合类型。
图18-1演示了数组的结构。
在第4章我们知道了数组类型属于引用类型,因此数组的数据实际是保存在托管堆中的,数组的引用保存在栈中。图18-1中是一个一维数组,是最简单的数组类型,还有更复杂的多维数组。18.4节将会介绍C#中各种类型的数组。
图 18-1 数组的结构
18.1 数组的声明
18.2 节会讲到,C#的数组有一维数组、矩形数组以及交错数组三种类型。先来看一下每种类型数组的例子,如图18-2所示。
在图18-2中,我们声明了一个一维数组、两个矩形数组(一个二维和一个三维)以及一个交错数组。这些数组类型虽然不同,但有一些共同的特点,总结如下:
图 18-2 数组的声明
❑要声明一维数组或矩形数组,首先要确定数组的类型,然后在类型后紧跟一对方括号,最后是数组变量名称。如果是矩形数组,还要确定数组的维数。
❑方括号代表的是维数说明符,一维数组为[],二维矩形数组为[,],三维矩形数组为[,],因此矩形数组的维数等于逗号数加1。
还有一些规则从表面上看不到,这里特别说明如下:
❑数组一旦声明,维数就是固定的,但每个维度的长度此时并未确定,需要到数组实例化时才会被确定。
❑数组声明时不能包含数组维度的长度。也就是说,如下代码是错误的,将无法通过编译:
正确的声明是这样的:
int[]array1;
注意 在C#中,数组声明中的方括号必须跟在数据类型后面,且不能放在变量名称之后,而这在C/C++中是允许的。