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

  • 相关阅读:
    combo参数配置_手册
    mysql服务器辅助选项
    CentOS中操作
    Linux PHP增加JSON支持及如何使用JSON
    linux服务器命令
    linux中的工具
    linux文件夹操作(及模糊搜索)
    治疗肾结石
    其他书籍
    如何定位到div滚动条的最底端
  • 原文地址:https://www.cnblogs.com/wangyblzu/p/5739994.html
Copyright © 2011-2022 走看看