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-17 foreach语句语法
代码清单18-10 的运行结果为:
a
b
c
在迭代过程中,foreach语句的工作方式是这样的:
(1)CLR将数组中的第一个元素的值赋给迭代变量;
(2)循环体语句中根据迭代变量的值做出相应的动作;
(3)第一次循环结束,CLR继续将数组的第二个元素的值赋给迭代变量;
(4)循环体语句中重复根据迭代变量的值做出相应的动作;
(5)重复,一直到读取完数组中最后一个元素的值为止。
提示 对于多维数组,使用嵌套for循环可以更好地控制数组元素。