码迷,mamicode.com
首页 > 其他好文 > 详细

foreach和for循环的区别

时间:2016-08-05 10:16:14      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

1、foreach

foreach依赖IEnumerable接口。

第一次var a in GetList()时调用GetEnumerator()返回第一个对象并赋给a,以后每次再执行 var a in GetList() 的时候仅调用MoveNext,直到循环结束。在循环期间GetList()方法只执行一次。

 1 foreach   (var a in GetList())
 2 {
 3     ...
 4 }
 5 
 6 //与下面具有相同功能
 7 
 8 var a;
 9 IEnumerator  e  =  GetList().GetEnumerator();
10 while (e.MoveNext)
11 {
12     a = e.Current;
13 }

 

2、for

for循环靠下标定位,list[3] 相当于 *(list + 3)。

 1 for(int i = 0; i < GetCount(); i++)
 2 {
 3   ....
 4 }
 5 
 6 //与下面具有相同功能
 7 
 8 int i = 0;
 9 
10 while(i < GetCount())
11 {
12   ...
13 }

 

3、

for循环每次循环会调用GetCount()来比较长度,而foreach不考虑长度,只调用一次GetList()。并且foreach的时候会锁定集合中的对象,期间不能修改。

 

4、小结

在固定长度或长度不需要计算的时候for循环效率高于foreach。

在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便。

 

foreach和for循环的区别

标签:

原文地址:http://www.cnblogs.com/wangyblzu/p/5739994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!