![C# 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/707/27111707/b_27111707.jpg)
6.2 一维数组的声明和使用
一维数组是使用同一个数组名存储一组数据类型相同的数据,用索引或下标区别数组中的不同元素。本节介绍一维数组的声明以及使用方法。
6.2.1 一维数组的声明
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-P119_17478.jpg?sign=1738896334-ET8MWssgy9lIDFoylTdpkkUMKaW9zjGu-0-ab9ccc2f5eee6a21bd59a8ae4b6e0cf4)
C#声明数组时,方括号[]必须跟在类型后面,而不是标识符后面。
1. 声明一维数组
C#数组的大小不是其类型的一部分,而在C语言中却是数组类型的一部分。语法格式如下:
datatype[] arrayName;
其中,datatype用于指定被存储在数组中的元素的类型;“[]”指定数组的秩(维度),秩指定数组的大小;arrayName指定数组的名称。
2. 初始化一维数组
声明一个数组时不会在内存中初始化数组。当初始化数组变量时,用户可以给数组变量赋值。数组是一个引用类型,所以C#数组的初始化方式有以下两种。
(1)在声明数组时为数组的元素赋初值。
例如:
int[] myArray = { 5, 9, 15, 22, 30 }; string[] myStrArr = { "diagram", "league", "brambling" };
(2)在声明数组时指定数组的大小(即数组的长度或数组元素的个数),这种方式需要使用new关键字来创建数组的实例。
例如:
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T119_66881.jpg?sign=1738896334-KvtKqPCJqgA9n5kNf6l7UgUPnNDjEUX7-0-aedb9fc700d4850aba31dd14205b0248)
当然不一定非是数值,也可以是带有常量(const)关键字的变量。
例如:
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T119_66882.jpg?sign=1738896334-5tUh4RVhc3Rfole9BU7BGiDF9Vp7NSnb-0-8dd1a4f3080366b7dbc5af24f5dd2cdf)
3. 为一维数组赋值
(1)可以通过使用索引号赋值给一个单独的数组元素。
例如:
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T120_66885.jpg?sign=1738896334-kVe93xMvcJgA6GVh7F9oBMknyEr1DDza-0-a865c83ddf1ad2d15daaf95a8c4cc811)
(2)可以在声明数组的同时给数组赋值。
例如:
double[] b = { 3.14, 6.28, 9.42 }; //声明一个double类型的数组b,并存入三个元素
(3)可以创建并初始化一个数组。
例如:
int[] a = new int[5] { 29, 28, 22, 27, 25 };
在上述情况下,也可以省略数组的大小,例如:
int [] a = new int[] { 29, 28, 22, 27, 25 };
用户也可以赋值一个数组变量到另一个目标数组变量中。在这种情况下,目标和源会指向相同的内存位置:
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T120_66888.jpg?sign=1738896334-SZH6Wm0CfWJKHA69qZO1llpFRgq7aXAH-0-fc1415ed5092c4b3aab6c818c12cef24)
当用户创建一个数组时,C#编译器会根据数组类型隐式初始化每个数组元素为一个默认值。例如,int数组的所有元素都会被初始化为0。
6.2.2 一维数组的使用
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-P120_17661.jpg?sign=1738896334-ymxmeZP332z7MQzJtqpAp0nPOE6BTWO2-0-abcafdc5604304d37106ab6950556b7a)
元素是通过带索引的数组名称来访问的,就是将元素的索引放置在数组名称后的方括号中来实现的。
(1)通过for循环来访问一维数组元素。
【例6-1】编写程序,声明一个数组,并对其进行赋值和访问操作。
① 在Visual Studio 2017中,新建名称为“Project1”的文件。
② 在代码编辑区域输入以下代码。
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T120_66889.jpg?sign=1738896334-Hw9ET0dkHiTl7kj6e0IURYOa68UNTJc1-0-9ea837fe9c09227cbe3b63e02a052d44)
【程序分析】本例演示一维数组的赋值与访问。在代码中,首先,声明一个int类型的数组a,并使用new关键字为其分配5个内存空间;接着再定义两个整型变量i和j,用于表示循环变量;然后,使用for循环为数组a初始化赋值;最后,再使用for循环和数组元素对应的下标来访问数组中的元素。
在Visual Studio 2017中的运行结果如图6-2所示。
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-P121_17791.jpg?sign=1738896334-digl6pXUUXRltA1LNzev0suCZHudrwec-0-adc953531689fff31178d963914a9d50)
图6-2 for循环访问一维数组
(2)通过foreach来访问一维数组。
注意:foreach循环对数组的内容进行只读访问,所以不能改变任何元素的值。
【例6-2】编写程序,声明一个数组,并对其进行访问。
① 在Visual Studio 2017中,新建名称为“Project2”的文件。
② 在代码编辑区域输入以下代码。
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T121_66900.jpg?sign=1738896334-2Uou0Q4bRZLbqD384RpvlShZRSZnknYi-0-f55ccf453cc549d35668d5e482fd1442)
【程序分析】本例演示一维数组的访问。在代码中,首先声明整型的一维数组myArry,并为其初始化赋值;然后使用foreach语句,输出该数组中的元素。
在Visual Studio 2017中的运行结果如图6-3所示。
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-P121_17799.jpg?sign=1738896334-FxtX8gDXoGkHKVuI9GtRw9vYWgHApqbi-0-ebfe40d8ea48aaaf619562ffbd68968b)
图6-3 foreach循环访问一维数组