![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=1739574614-ttdY7Ju9X3nSBH7WsXA1CC1UUJp42OvC-0-d0cb70a577d2e7389481df73f678d463)
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=1739574614-3Su7UO5a7pe1XiCVcp9lI1cU2Pz8nNCX-0-f6543d5a9c20380fedd455898f332681)
当然不一定非是数值,也可以是带有常量(const)关键字的变量。
例如:
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T119_66882.jpg?sign=1739574614-pzyZeogZkRRpXnn0Sv89PjZNwfUr9Z6b-0-5615375720f01484d46efb403afe7831)
3. 为一维数组赋值
(1)可以通过使用索引号赋值给一个单独的数组元素。
例如:
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T120_66885.jpg?sign=1739574614-cmaB1FfXuvM5A0DUr5DxBMByqfKuupO8-0-d466cd89e66d8d47f2590821d945000b)
(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=1739574614-Gb2EQGJsGJMdQ0UjqeLWUp0hUM0AdhqD-0-37b6440137d801b1728025d03d4f1d10)
当用户创建一个数组时,C#编译器会根据数组类型隐式初始化每个数组元素为一个默认值。例如,int数组的所有元素都会被初始化为0。
6.2.2 一维数组的使用
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-P120_17661.jpg?sign=1739574614-E06G5CU7iJMevlnPCLHuL1k4rdHMppLc-0-47fb0cd21864eaa3ce8a42fba77da9fa)
元素是通过带索引的数组名称来访问的,就是将元素的索引放置在数组名称后的方括号中来实现的。
(1)通过for循环来访问一维数组元素。
【例6-1】编写程序,声明一个数组,并对其进行赋值和访问操作。
① 在Visual Studio 2017中,新建名称为“Project1”的文件。
② 在代码编辑区域输入以下代码。
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-T120_66889.jpg?sign=1739574614-TKCuJ5ePIlIk5b2S3i7ucZIVQAkcfj86-0-a2e2395f945cbf04c7ec525b3954c179)
【程序分析】本例演示一维数组的赋值与访问。在代码中,首先,声明一个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=1739574614-kOu8IWxKkod1JYpTVoQUNP9JAOwry4ef-0-34fcd69064491382e962b34677f89530)
图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=1739574614-dYvQtnXIrZUOL2fXXbZoeKx4ybjJ9usa-0-0bea071ae528ba321414f063d06b0436)
【程序分析】本例演示一维数组的访问。在代码中,首先声明整型的一维数组myArry,并为其初始化赋值;然后使用foreach语句,输出该数组中的元素。
在Visual Studio 2017中的运行结果如图6-3所示。
![](https://epubservercos.yuewen.com/938BD7/15477656705638906/epubprivate/OEBPS/Images/Figure-P121_17799.jpg?sign=1739574614-lCm1jIV8VW5pnog75iRFViSIbTDJgrKy-0-4084627e1bb5da2ce02d8fa71956c9b5)
图6-3 foreach循环访问一维数组