18.9 使用foreach和for语句访问数组

foreach语句和for语句都可用于循环访问集合,而数组也是集合(在第19章会详细介绍集合)的一种,因此也可用于迭代获取数组中各元素的值。但foreach和for的用法不同,各有千秋,我们将分别进行介绍。

18.9.1 foreach语句

因为数组类型是从System.Array派生的引用类型,System.Array类型实现了IEnumerable和IEnumerable<T>接口,因此可以对数组使用foreach进行迭代。foreach语句允许我们连续地访问一个集合中的元素。在介绍foreach的语法之前,先来看一段示例代码,使用foreach语句来循环显示一个一维数组中的数据元素,如代码清单18-10所示。

代码清单18-10 foreach语句示例


string[]array1={"a","b","c"};

foreach(string item in array1)

{

System.Console.WriteLine(item);

}


可以看到,foreach由如下几个部分组成:

❑迭代变量item。它的类型就是数组的类型,也可以使用隐式类型——使用var关键字,编译器可以自动推断类型,注意迭代变量item是只读的,不支持改变集合元素的数据。

❑in关键字。用于指示在哪个集合中迭代,其后跟数组名称。

❑循环体。在循环体中可以直接使用迭代变量的值进行相应操作。

图18-17说明了foreach语句的语法。

18.9 使用foreach和for语句访问数组 - 图1

图 18-17 foreach语句语法

代码清单18-10 的运行结果为:


a

b

c


在迭代过程中,foreach语句的工作方式是这样的:

(1)CLR将数组中的第一个元素的值赋给迭代变量;

(2)循环体语句中根据迭代变量的值做出相应的动作;

(3)第一次循环结束,CLR继续将数组的第二个元素的值赋给迭代变量;

(4)循环体语句中重复根据迭代变量的值做出相应的动作;

(5)重复,一直到读取完数组中最后一个元素的值为止。

提示 对于多维数组,使用嵌套for循环可以更好地控制数组元素。