A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 幸福的彼岸 于 2014-1-15 14:53 编辑

foreach和for循环有哪些区别呀?什么情况下能用foreach循环?

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

6 个回复

倒序浏览
foreach 就是步长为1的for的一个特殊实现,类似于数据库中的游标机制,只能够向前,不能够往后,用foreach也只能够遍历对象,如果要改变对象,需要手动的添加一条索引语句 i++

能用foreach遍历访问的对象需要实现 IEnumerable接口或声明 GetEnumerator 方法的类型。
在对数组,集合等进行遍历输出的时候 foreach比较好,

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
       for循环直接访问成员,可以控制循环的进度,位置和其他顺序,直接修改数组中数据.
       for循环用于需要对数据进行批量操作的时候,比如将数组中的每个内容加上某些东西。for循环除了一些特殊场合不能使用,其它地方一般都会使用。
       foreach遍历数据是通过使用一个临时变量,将值复制一份放到临时变量中,再执行循环体,因此无法访问到真正的数据,故只读,不可写;是否继续循环是由数据类型决定的,一旦开始就一直执行循环体,直到遍历完所有内容.

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
for 你先要给初值,末值和步长

foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值
回复 使用道具 举报
foreach循环次数是由lines里面的元素个数决定的,foreach语句只能依次获取直到末尾,for语句可以自己选择循环多少次。

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 沈可 于 2014-1-15 14:47 编辑

for 你先要给初值,末值和步长foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值  
string[] a=new string[]{"a","b"};
for(i=0;i<a.length;i++)
{
      Response.write(a.ToString()) ;
}
foreach(string b in a)
{
      Response.write b ;
}
foreach遍历需要实现IEnumerable接口或声明GetEnumerator方法的类型

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

回复 使用道具 举报
for 你先要给初值,末值和步长
foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值
如下例子:
string[] a=new string[]{"a","b"}
for(i=0;i<a.length;i++)
{
Response.write(a[i].ToString())
}
foreach(string b in a)
{
Response.write b
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马