设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 2288|回复: 9
打印 上一主题 下一主题

for 循环 和 foreach循环 原理 [复制链接]

Rank: 2

跳转到指定楼层
1#
嘟嘟 发表于 2011-7-20 08:48:08 |只看该作者 |倒序浏览
总是听 资深程序员 说  foreach比for  循环 效率高   那他们内部实现原理是什么? 高手指点


详细!!详细!在详细!  呵呵  
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0
哈哈哈大笑三声!

Rank: 8Rank: 8

2#
那个谁 发表于 2011-7-20 09:00:25 |只看该作者
求详解。求详解。

使用道具 举报

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

3#
混混@普宁.中国 实名认证  发表于 2011-7-20 09:16:22 |只看该作者
这个不明白。。。
但俺一般不会把心思放在这类问题上面
如果偶然机会能了解到 就顺便给看了,没看到也不理它。。

使用道具 举报

Rank: 8Rank: 8

4#
momo 发表于 2011-7-21 12:29:52 |只看该作者
foreach 因为比for多了个each所以就快撒
过了爱做梦的年纪
轰轰烈烈不如平静

使用道具 举报

Rank: 9Rank: 9Rank: 9

5#
浴火凤凰 发表于 2011-7-21 15:48:11 |只看该作者
说实话,喜欢for不喜欢foreach,因为foreach能实现的for基本都能实现,
for能实现的foreach不一定能实现。

使用道具 举报

Rank: 2

6#
嘟嘟 发表于 2011-7-22 08:32:40 |只看该作者
momo 发表于 2011-7-21 12:29
foreach 因为比for多了个each所以就快撒

高手啊!!
哈哈哈大笑三声!

使用道具 举报

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

7#
混混@普宁.中国 实名认证  发表于 2011-7-22 08:39:24 |只看该作者
momo 发表于 2011-7-21 12:29
foreach 因为比for多了个each所以就快撒



强悍撒

使用道具 举报

Rank: 7Rank: 7Rank: 7

8#
俊俊 实名认证  发表于 2011-7-22 14:16:44 |只看该作者
本帖最后由 cjqq0218 于 2011-7-22 14:18 编辑

for 你先要给初值,末值和步长
foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值。
补充:
第一,不能修改的是foreach引用变量,因为它是引用的,对它的修改没有意义也没有作用,它就像一个c/c++指针那样对集合中的元素进行指向引用;我们能通过引用看到它,但是没有能力动它。
第二,in之前的变量是引用变量,但in之后的集合确是实实在在的,所以可以对它操作,像.ADD();REMOVE()等方法可以使用。
第三,foreach引用变量大概是通过地址指向后面的集合(我猜想跟c/c++的指针很像),当修改了集合的元素时,地址可能发生某种改变,所以不跳出循环继续遍历时,就可能出现引用找不到的情况。


关于效率:
对于原来的for语句foreach具有更好的执行效率,foreach的平均花费时间只有for30%。
通过测试结果在for和foreach都可以使用的情况下,我 们推荐使用效率更高的foreach.在测试同时我们附加的发现,用for写入数据时间大约是读取数据时间的10倍左右。


摘自baidu

使用道具 举报

Rank: 8Rank: 8

9#
那个谁 发表于 2011-7-23 09:45:41 |只看该作者
foreach 已一个object来处理的。。多少遍历的时候是一个集合。

使用道具 举报

Rank: 2

10#
嘟嘟 发表于 2013-5-16 11:48:10 |只看该作者
俊俊 发表于 2011-7-22 14:16
for 你先要给初值,末值和步长
foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有 ...

谢谢大神指点!
哈哈哈大笑三声!

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-5-4 22:40 , Processed in 1.077108 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部