Scripts 学盟

标题: for 循环 和 foreach循环 原理 [打印本页]

作者: 嘟嘟    时间: 2011-7-20 08:48:08     标题: for 循环 和 foreach循环 原理

总是听 资深程序员 说  foreach比for  循环 效率高   那他们内部实现原理是什么? 高手指点


详细!!详细!在详细!  呵呵  
作者: 那个谁    时间: 2011-7-20 09:00:25

求详解。求详解。
作者: 混混@普宁.中国    时间: 2011-7-20 09:16:22

这个不明白。。。
但俺一般不会把心思放在这类问题上面
如果偶然机会能了解到 就顺便给看了,没看到也不理它。。
作者: momo    时间: 2011-7-21 12:29:52

foreach 因为比for多了个each所以就快撒
作者: 浴火凤凰    时间: 2011-7-21 15:48:11

说实话,喜欢for不喜欢foreach,因为foreach能实现的for基本都能实现,
for能实现的foreach不一定能实现。
作者: 嘟嘟    时间: 2011-7-22 08:32:40

momo 发表于 2011-7-21 12:29
foreach 因为比for多了个each所以就快撒

高手啊!!
作者: 混混@普宁.中国    时间: 2011-7-22 08:39:24

momo 发表于 2011-7-21 12:29
foreach 因为比for多了个each所以就快撒



强悍撒
作者: 俊俊    时间: 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
作者: 那个谁    时间: 2011-7-23 09:45:41

foreach 已一个object来处理的。。多少遍历的时候是一个集合。
作者: 嘟嘟    时间: 2013-5-16 11:48:10

俊俊 发表于 2011-7-22 14:16
for 你先要给初值,末值和步长
foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有 ...

谢谢大神指点!




欢迎光临 Scripts 学盟 (http://www.iscripts.org/) Powered by Discuz! X2