- ASP.NET程序设计教程(第2版)
- 崔连和主编
- 2083字
- 2025-02-17 21:56:23
3.4 数组
常量和变量都只能存储一个值,数组则可以简单地理解为一次存储多个值的变量。数组可以简化繁重的变量定义工作。例如,有100名学生的姓名需要存入变量中,如果用逐一定义变量的方式,则需要依次定义name1,name2,name3……,需要重复定义100次;如果采用数组的方式,只要一句简单的语句,就可以一次全部完成定义工作,而且以后的赋值使用同样简单。
3.4.1 数组的有关概念
数组即一组数据的集合,数组本质上也是一个变量,但这个变量与普通变量不同,普通变量只能存储一个数值,数组则能存储具有同一类型的多个数值。需要存储多个相同类型的变量。如30个学生的姓名,如果使用30个变量,不但定义烦琐,同一操作必须进行30次,更为烦琐。有了数组,可以把他们定义为一个数组变量Stu_Name,而用Stu_Name[1],Stu_Name[2]……,代表每一个学生了。
使用C#的数组之前,必须了解几个基本概念。
1.一维数组与多维数组
数组由数组名称和下标组成。只有一个下标的数组称为一维数组,如Student[4],Day[7]。有两个下标的数组称为二维数组,如myArray[2,3]。以此类推,有几个下标的数组称为几维数组,二维及二维以上的数组统称为多维数组。
2.数组的长度
数组的长度是指数组由多少个元素组成。数组中的元素必须具有相同的类型,如数组中的数据全部都是整数或全部都是字符串。Student[4]表示该数组有4个元素,数组的长度为4;myArray[2,3]则表示该数组由2×3个元素组成,该数组的长度为6。
3.数组索引运算符
数组的索引也叫数组的下标,数组的索引从0开始,到数组长度减1结束。[]为数组索引运算符,[]里面的数值为数组的下标。例如,数组Student[4],其元素为Student[0]、Student[1]、Student[2]、Student[3]。
4.C#中表示数组的类
C#中的System.Array类是所有数组的基类,该类中提供了一些属性和方法用来实现有关数组的各种操作,如Copy方法可实现数组的复制,Sort方法可实现对一维数组元素的排序等。
3.4.2 数组的定义
一般而言,数组都必须先声明后使用,在C#中数组是一个引用类型,声明数组只是预留一个存储位置以引用将来的数组实例,实际的数组对象是通过new运算符在运行时动态产生的。因此,在数组声明时,可不先给出数组的元素个数。现分别介绍一维数组和多维数组,定义形式如下。
1.一维数组
(1)一维数组声明语法形式

其中数组元素的数据类型,可以是C#中任意的数据类型;数组名必须遵循标识符的命名规则。例如,定义整型数据的数组Stu,语法格式为:

定义double类型数据的数组money,语法格式为:

(2)创建数组对象
用new运算符创建数组实例,有两种基本形式。
第一种是声明数组和创建数组分别进行,语法格式如下。

第二种是声明数组和创建数组实例合在一起书写。

创建数组经常的用法如表3-13所示。
表3-13 一维数组类型举例

2.多维数组
多维数组就是指能用多个下标访问的数组。在声明时方括号内加逗号,表明该数组是多维数组。
(1)多维数组声明语法形式

例如,定义int类型的二维数组Student,其语法格式为

定义数据为双精度类型的三维数组Number,其语法格式为

(2)创建数组对象
创建多维数组对象语法格式与创建一维数组对象相同,也是使用new运算符,声明数组和创建数组也是既可分行书写,也可合在一起书写,程序举例如表3-14所示。
表3-14 多维数组类型举例

3.4.3 数组的使用
1.数组的赋值
数组中元素的赋值即可以逐一进行赋值,也可以一次性全部赋值。
1)单独赋值。单独赋值就是通过关键字new对数组进行初始化之后逐个指定数组中各元素的值。
2)一次性全部赋值。在声明数组的同时对数组进行初始化赋值,此时可省略数组的大小,如表3-15所示。
表3-15 数组赋值举例

2.数组内容的读取
数组元素可以当成普通变量一样使用,所以其内容读取方法与普通变量读取方法完全相同。只需要在数组名后面加上索引值就可以使用。例如,读取number[2]的值可以使用S_number=number[2]。
3.4.4 与数组有关的操作
数组除了可以进行与变量相同的各种操作之外,系统还提供了许多有关数组的函数和方法,极大地扩充了数组的功能。
1.数组的长度
在C#中有两种方法可以求得数组的长度,一种是通过数组的Length属性,另一种是通过GetLength()方法。现举例说明,如表3-16所示。
表3-16 数组长度举例

2.使用foreach遍历数组元素
在C#中可用foreach循环语句遍历数组中的每个元素,foreach语句的使用规则将在3.5.3节介绍下面通过一个找出数组中的最大值及最小值实例说明遍历数组元素的方法。
【操作实例3-6】 求数组中的最大数和最小数。
新建网站文件,在设计视图中添加一个按钮Button1,并将其Text属性改为“遍历数组”,然后添加一个文本框Text1Box1,双击按钮Button1后添加如表3-17所示代码。
表3-17 用foreach语句遍历数组

程序编写完成后,按〈Ctrl+F5〉组合键运行后,单击“遍历数组”按钮出现如图3-4所示的最终运行结果界面。
3.数组元素的查找
在C#中,可以通过数组类的方法Array.IndexOf和Array.LastIndex来查找指定的元素在数组中出现的位置。例如:

上述语句中将用整数类型变量pos返回“胡少坤”在数组name中第一次出现的索引值。
4.数组元素的排序
C#中用以实现数组排序的方法为Array.Sort()。
【操作实例3-7】 将一个数组按照从小到大排序。
新建网站文件,在设计视图中添加一个按钮Button1,并将其Text属性改为“数组排序”,然后添加一个文本框Text1Box1,双击按钮Button1后添加如表3-18所示代码。
表3-18 用ArraySort()实现数组排序

程序编写完成后,按〈Ctrl+F5〉组合键运行后,单击“数组排序”按钮出现如图3-5所示的最终运行结果界面。

图3-4 用foreach遍历数组执行效果

图3-5 数组排序执行效果