您的位置: 网站首页 > 程序开发 > C#程序设计 > 第4章 数组 > 【4.1 C#数组简介】

4.1 C#数组简介

 

本章主要介绍在C#中使用数组的相关知识。数组是大部分编程语言都支持的一种数据类型,使用比较方便,能处理一定的复杂问题。本章将先介绍数组的相关概念,然后逐渐介绍如何访问数组的元素,对其进行遍历、查找和排序等常见操作。

本章主要内容

&        一般数组和多维数组

&        数组的声明与创建

&        访问数组的元素

&        对数组进行各种操作

&        动态创建数组

&        综合实例

4.1  C#数组简介

本节介绍数组的基本知识以及如何创建数组。尽管数组的名称中包含“数”这个汉字,但数组内的元素却不一定只是数值类型。为了读者理解方便,本节尽可能选取一些数值类型的数组进行演示。

4.1.1  数组的概念

从字面意义上理解数组的概念,可以解释为“一组数”,但正确的理解应该为“一组元素”,这组元素具有相同的类型和名称。在使用时,为了区别数组中的元素,需要使用下标。不同的下标表示数组中不同的元素,配合数组的名称便可以访问数组中的所有元素。C#中,数组的下标是从0开始的,数组的长度定义为数组中包含元素的个数。

数组中的元素可以是数值,如下的代码定义了一个整型的数组:

int[] a;

普通变量的声明如下:

int a;

由此可见,在声明时的区别在于中括号的使用。整型关键字int后加一对中括号时声明的a是一个整型的数组,而直接使用整型关键字int声明的a为一个整型变量。数组中也可以包含其他类型的元素,如下的代码定义了一个字符串类型的数组:

string[] a;

同样,可以有许多种其他类型的数组,这里不作详细说明。数组的直观理解可以用图4-1进行说明。

1

2

3

4

5

4-1  数组

假设图4-1展示的是一个数组x,该数组中的元素为“12345”。显然,该数组的长度为5。根据前面介绍的下标概念,可以知道“12345”的访问方式分别应该为“x[0]x[1]x[2]x[3]x[4]”。

4.1.2  多维数组

相对于4.1.1小节介绍的数组概念,本小节介绍一种更为复杂的数组。试看图4-2所表示的数组。

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

4-2  复杂数组

此时可以用上小节中介绍的方式,以一个长度为25的数组表示图4-2中的元素,即可以将图4-2转化为如图4-3所示的形式。

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

4-3  复杂数组的转换

这时可以用x[0]x[24]来访问该数组中的元素。但C#中提供了一种更为简便的方式,即多维数组。可以将多维数组看成是由数组构成的数组,例如,将图4-2表示的数组看作5个数组,其中每个数组为长度为5的数组。其中每一行为一个数组,这5行又分别作为数组中的元素构成了另一个数组。

当构成一个多维数组x时,x[0,0]x[4,4]中的x[0,*]x[4,*]表示图4-2中的5行。若要访问每一行中的元素,如第一行的第一个元素,则可以使用x[0,0]进行访问。运用这种规则,可以构成任意复杂维度的数组。声明多维数组的方法非常简单,如下的代码声明了一个整型二维数组:

int[,] a;

同样,也可以声明其他类型的数组,如下的代码声明了一个字符串类型的二维数组:

string[,] a;

4.1.3  创建C#数组

前几节介绍了普通数组和多维数组的概念,并给出了声明相应类型数组的方法。本节介绍如何在C#中创建数组,下面通过一个实例进行说明。

1.目的说明

创建一个Windows控制台应用程序,使用不同的方式声明数组。

2.实现步骤

1)创建一个名为CreateArray的控制台应用程序项目。

2)修改Program.cs文件中Main方法的内容如下:

static void Main(string[] args)

{

    //创建方式1

    int[] a = { 1, 2, 3, 4, 5 };

    Console.WriteLine(a[0]);

    Console.WriteLine(a[1]);

    Console.WriteLine(a[2]);

    Console.WriteLine(a[3]);

    Console.WriteLine(a[4]);

 

    //创建方式2

    int[] b = new int[5] { 6, 7, 8, 9, 10 };

    Console.WriteLine(b[0]);

    Console.WriteLine(b[1]);

    Console.WriteLine(b[2]);

    Console.WriteLine(b[3]);

    Console.WriteLine(b[4]);

 

    //创建方式3

    int[] c = new int[5];

    c[0] = 11;

    c[1] = 12;

    c[2] = 13;

    c[3] = 14;

    c[4] = 15;

    Console.WriteLine(c[0]);

    Console.WriteLine(c[1]);

    Console.WriteLine(c[2]);

    Console.WriteLine(c[3]);

    Console.WriteLine(c[4]);

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图4-4所示。

4-4  运行结果

4.代码分析

1)创建方式1。方式1中没有明确指出数组的长度,但直接使用数值“1”、“2”、“3”、“4”和“5”对其进行了初始化。随后对其进行了访问,并输出至控制台窗口中。

2)创建方式2。方式2使用new关键字创建了一个int型的数组,不仅限定了数组的长度,并且进行了初始化。这也是一种声明数组的方式。随后对其进行了访问,并输出至控制台窗口中。

3)创建方式3。方式3在创建数组时只限定了数组的长度,初始化的工作是在随后的代码中进行的。在随后的代码中逐一对数组中的元素进行了赋值。随后对其进行了访问,并输出至控制台窗口中。

4)数组的长度。若在创建方式1和创建方式2的代码末尾分别加入如下代码:

Console.WriteLine(a[5]);

Console.WriteLine(b[5]);

即访问了数组中不存在的一个元素,在编译时并不会出现错误。运行时,Visual Studio 2005将会提示出现异常,如图4-5所示。因此,使用数组时要注意数组的长度限制。

5)数组的初始化。在对数组中的元素进行访问前,一定要对数组进行初始化。考虑如下的代码:

4-5  运行结果

static void Main(string[] args)

{

    int[] d;

    d[0] = 1;

}

在编译该段代码时,Visual Studio 2005就会提示错误,如图4-6所示。

4-6  运行结果