欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > C# 数组(foreach语句)

C# 数组(foreach语句)

2025/9/21 19:08:07 来源:https://blog.csdn.net/weixin_42291376/article/details/148812997  浏览:    关键词:C# 数组(foreach语句)

foreach语句

foreach语句允许我们连续访问数组中的每一个元素。其实它是一个比较通用的结构,可以
和其他集合类型一起使用——但是本节只会讨论它和数组的使用。

有关foreach语句的重点如下所示。

  • 迭代变量是临时的,并且和数组中元素的类型相同。foreach语句使用迭代变量来相继表
    示数组中的每一个元素。
  • foreach语句的语法如下,其中
    • Type是数组中元素的类型。我们可以显式提供它的类型,也可以使用va让其成为隐
      式类型并通过编译器来推断,因为编译器知道数组的类型。
    • ldentifier是迭代变量的名字。
    • ArrayName是要处理的数组的名字。
    • Satement是要为数组中的每一个元素执行一次的单条语句或语句块。

image

在之后的内容中,有时会使用隐式类型,而有时又会使用显式类型,这样我们就可以看到使
用的确切类型,但是两种形式的语法是等价的。
foreach语句以如下方式工作。

  • 从数组的第一个元素开始并把它赋值给迭代变量。
  • 然后执行语句主体。在主体中,我们可以把迭代变量作为数组元素的只读别名。
  • 在主体执行之后,foreach语句选择数组中的下一个元素并重复处理。
    这样,它就循环遍历了数组,允许我们逐个访问每一个元素。例如,如下代码演示了foreach
    语句和一个具有4个整数的一维数组的使用。
  • foreach语句的主体WriteLine语句为数组的每一个元素执行一次。
  • 第一次遍历时,迭代变量item就有了数组中第一个元素的值。相继执行后,它就有了数
    组中下一个元素的值。

image

迭代变量是只读的

由于迭代变量的值是只读的,所以它不能改变。但是,这对于值类型数组和引用类型数组而
言效果不一样。
对于值类型数组,这意味着在用迭代变量表示数组元素的时候,我们不能改变它们。例如,
在如下的代码中,尝试改变迭代变量中的数据产生了编译时错误消息:

image
对于引用类型数组,我们仍然不能改变迭代变量,但是迭代变量只是保存了数据的引用,而
不是数据本身。因此,虽不能改变引用,但我们可以通过迭代变量改变数据。
如下代码创建了一个有4个MyClass对象的数组并将其初始化。在第一个foreach语句中,
改变了每一个对象中的数据。在第二个foreach语句中,从对象读取改变后的值。

class MyClass{public int MyField=0;
}class Program{static void Main(){MyClass[] mcArray=new MyClass[4];    //创建数组for(int i=0;i<4;i++){mcArray[i]=new MyClass();        //创建类对象mcArray[i].MyField=i;            //设置字段}foreach(MyClass item in mcArray)item.MyField+=10;                //改变数据foreach(MyClass item in mcArray)Console.WriteLine($"{item.MyField}");//读取改变的数据}
}

foreach语句和多维数组

在多维数组中,元素的处理次序是最右边的索引号最先递增。当索引从0到长度减1时,开
始递增它左边的索引,右边的索引被重置成0。

矩形数组的示例

如下代码演示了将foreach语句用于矩形数组:

class Program
{static void Main(){int total=0;int[,] arr1={{10,11},{12,13}}foreach(var element in arr1){total+=element;Console.WriteLine($"Element:{element},Current Total:{total}");}}
}

交错数组的示例

交错数组是数组的数组,所以我们必须为交错数组中的每一个维度使用独立的foreach语句。
foreach语句必须嵌套以确保每一个嵌套数组都被正确处理。
例如,在如下代码中,第一个foreach语句遍历了顶层数组(arr1),选择了下一个要处理
的子数组。内部的foreach语句处理了子数组的每一个元素。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词