首页 > 编程笔记

C#一维数组的创建和使用

数组是具有相同数据类型的一组数据的集合,例如:
变量用来保存单个数据,而数组则保存的是相同类型的多个数据。

数组中的变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一的索引与其相对应,数组的索引从 0 开始。

数组是通过指定数组的元素类型、数组的秩(维数)及数组每个维度的上限和下限来定义的,即一个数组的定义需要包含以下几个要素:
在程序设计中引入数组可以更有效地管理和处理数据。根据数组的维数可以将数组分为一维数组、多维数组和不规则数组等。

C# 一维数组的创建

一维数组实质上是一组相同类型数据的线性集合。例如,学校中学生们排列的一字长队就是一个数组,每一位学生都是数组中的一个元素;又如若把一家快捷酒店看作一个一维数组,那么酒店里的每个房间都是这个数组中的元素。

在 C# 中,数组作为对象允许使用 new 关键字进行内存空间分配。在使用数组之前,必须定义数组变量所属的类型。

一维数组的创建有两种形式。

1) 先声明,再用 new 关键字进行内存空间分配

声明一维数组时使用以下形式:

数组元素类型[ ] 数组名字;

数组元素类型决定了数组的数据类型,它可以是 C# 中任意的数据类型。数组名字为一个合法的标识符,符号[ ]表明是一个数组。单个[ ]表示要创建的数组是一个一维数组。

例如,声明一维数组的 C# 代码如下:
int[] arr;  //声明整数(int)类型数组,数组中的每个元素都是int类型数值
string[] str; //声明字符串(string)类型数组,数组中的每个元素都是string类型数值
声明数组后,还不能访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型。要想真正使用数组,还要为它分配内存空间。在为数组分配内存空间时,必须指明数组的长度。

为数组分配内存空间的语法格式如下:

数组名字 = new 数组元素类型[数组元素的个数];

通过上面的语法可知,使用 new 关键字分配内存时,必须指定数组元素的类型和数组元素的个数,即数组的长度。

例如,为数组分配内存空间,代码如下。
arr = new int[5];
说明:使用 new 关键字为数组分配内存空间时,整数类型数组中各个元素的初始值都为 0。

以上代码表示要创建一个有5个元素的整数类型数组,其数据存储形式如图1所示。

C#一维数组的内存模式
图1:一维数组的内存模式

在图1中,arr 为数组名称,[ ]中的值为元素的索引。数组通过索引来区分数组中不同的元素。索引是从 0 开始的。由于创建的数组 arr 中有5个元素,因此数组中元素的索引为 0~4。

常见错误

上面的代码定义了一个长度为5的数组,但如果使用 arr[5],将会引起索引超出范围异常,因为数组的索引是从 0 开始的。索引超出范围的异常提示如图2所示。

索引超出范围的异常提示
图2:索引超出范围的异常提示

2) 声明的同时为数组分配内存空间

这种创建数组的方法是将数组的声明和内存空间的分配合在一起执行。

语法格式如下:

数组元素类型[] 数组名 = new数组元素类型[数组元素的个数];

例如,声明并为数组分配内存空间的 C# 代码如下:
int[] month = new int[12];
上面的代码创建了数组 month,并指定了数组长度为 12。

C# 一维数组的初始化

数组的初始化主要分为两种:为单个数组元素赋值和同时为整个数组赋值,下面分别介绍。

1) 为单个数组元素赋值

为单个数组元素赋值即首先声明一个数组,并指定长度,然后为数组中的每个元素进行赋值,C# 代码如下:
int[] arr = new int[5]; //定义一个int类型的一维数组
arr[0] = 1;  //为数组的第1个元素赋值
arr[1] = 2;  //为数组的第2个元素赋值
arr[2] = 3;  //为数组的第3个元素赋值
arr[3] = 4;  //为数组的第4个元素赋值
arr[4] = 5;  //为数组的第5个元素赋值
使用这种方式对数组进行赋值时,通常使用循环实现。

例如,上面的代码可以修改成如下形式:
int[] arr = new int[5];               //定义一个int类型的一维数组
for (int i = 0; i < arr.Length; i++)  //遍历数组
{
     arr[i] = i + 1;                  //为遍历到的数组元素赋值
}
说明:Length 属性用来获取数组的长度。

注意:循环次数必须与数组大小相匹配,否则会产生遍历错误。

2) 同时为整个数组赋值

同时为整个数组赋值需要使用大括号,将要赋值的数据括起来并用逗号,隔开,形式如下:
string[] arrStr = new string[7] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
或者使用如下形式:
string[] arrStr = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
还可以使用如下形式:
string[] arrStr = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
以上3种形式实现的效果是一样的,都是定义了一个长度为7的 string 类型数组,并进行了初始化。其中,后两种形式会自动计算数组的长度。

C# 一维数组的使用

创建一个控制台应用程序,其中定义一个 int 类型的一维数组,实现将各月的天数输出,C# 代码如下:
static void Main(string[] args)
{
     //创建并初始化一维数组
     int[] day = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
     for (int i = 0; i < 12; i++) //利用循环将信息输出
     {
           Console.WriteLine((i + 1) + "月有" + day[i] + "天"); //输出的信息
     }
     Console.ReadLine();
}
程序运行结果如图3所示。

输出 1~12 月份各月的天数
图3:输出 1~12 月份各月的天数

推荐阅读