Foreach循环

Foreach 循环(foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组集合中的元素。

程序示例编辑

C#编辑

以下代码用于循环打印名称为myArray的整型数组中的每个元素。[1]

foreach (int x in myArray){  Console.WriteLine(x);}

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译。

foreach (int x in myArray){  x++; //错误代码,因为改变了元素的值  Console.WriteLine(x);}

如果要让自定义的数据类型支持foreach循环,则该类型必须实现IEnumerable<T>接口,且存在对应此列表的IEnumerator<T>实现。实际上,在.Net的底层(IL语言层面)而言,

foreach (var x in list) // x的类型为T{   ...}

等价于如下代码:

using (var iterator = list.GetEnumerator()) // iterator的类型为IEnumerator<T>{  while ( iterator.MoveNext() )   {    var x = iterator.Current();    ... // 本段代码中禁止修改x的值——编译器会报错  }}

它只是为了让用户更加易于使用的等价描述形式。

Java编辑

Java语言从JDK 1.5.0开始引入foreach循环。[2]

以下代码用于循环打印myArray数组中的每个元素,java中的foreach循环使用for关键字,而非foreach

for (int x : myArray){  System.out.println(x);}

与C#不同的是,Java中运行以下代码不会编译出错,但是实际数组中的元素不会被修改。

for (int x : myArray){  x++;  System.out.println(x);}

C++编辑

C++11擴展for的用法,增加了foreach功能,語法和Java一樣。

for (int x : myArray){  cout << x << endl;}

同時也有C++求值策略的功能,可以傳參考。

for (int& x : myArray){  x = x * x;}for (int x : myArray){  cout << x << endl;}

参考資料编辑

  1. ^ foreach、in (C# 參考). msdn.microsoft.com. [2015-10-16]. (原始内容存档于2015-01-12). 
  2. ^ The For-Each Loop. docs.oracle.com. [2015-10-16]. (原始内容存档于2015-06-22). 

参见编辑

🔥 Top keywords: Baike: 首页Special:搜索九龍城寨之圍城胖猫跳江事件Energy (組合)淚之女王背着善宰跑逆天奇案2金智媛习近平郭葦昀金秀賢 (男演員)不夠善良的我們九龍寨城邊佑錫伍允龍春色寄情人劉俊謙 (香港)張書偉怪獸8號虽然不是英雄葉乃文謝坤達神耆小子六四事件我的婆婆怎麼那麼可愛排球少年!!角色列表唐振剛2024年湯姆斯盃Seventeen (組合)蕭景鴻排球少年!!WIND BREAKER—防風少年—安東尼·愛德華茲 (籃球運動員)ILLIT中华人民共和国中華民國BABYMONSTER與鳳行張文傑BOYNEXTDOOR彭丽媛笑看風雲日本母亲节习明泽金惠奫徐巧芯從Lv2開始開外掛的前勇者候補過著悠哉異世界生活德雷克 (歌手)搜查班長1958支配物种乘風2024張員瑛承欢记嚴爵香港梅龍高速公路塌陷事故柯建銘葬送的芙莉蓮迷宮飯轉生貴族憑鑑定技能扭轉人生~繼承弱小領土後,招募優秀人才打造最強領土~为人民服务 (2022年电影)黃道十二宮IVE (組合)草榴社区歐倩怡沒有秘密周雨彤柯佳嬿無職轉生~到了異世界就拿出真本事~謝京穎埃马纽埃尔·马克龙破墓周處除三害 (電影)許瑋甯Twitter五月天打天下2逆天奇案李主儐大谷翔平家族榮耀之繼承者胡子彤郭晉安毛泽东Baike: 分類索引沈伯洋白紙運動文化大革命城市猎人 (2024年电影)2024年花蓮地震(G)I-DLE城市猎人朴成焄郭宁宁2024年優霸盃哥吉拉-1.0汤姆斯杯