zoukankan      html  css  js  c++  java
  • foreach和for循环的区别

    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比较方便。

  • 相关阅读:
    复利计算--结对1.0,做汉堡,结对2.0
    复利计算1.0,2.0,3.0,4.0,5.0
    2020助教总结
    作业2
    作业一
    linux设置opengl版本
    第一次个人作业
    寒假助教总结
    直播
    2020面向对象程序设计寒假作业3
  • 原文地址:https://www.cnblogs.com/wangyblzu/p/5739994.html
Copyright © 2011-2022 走看看