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

    foreach 依赖 IEnumerable.

    第一次 var a in GetList() 时 调用 GetEnumerator 返回第一个对象 并 赋给a,

    以后每次再执行 var a in GetList() 的时候 调用 MoveNext.直到循环结束.

    期间GetList()方法只执行一次.

    foreach   (var a in GetList())
    {
        ...
    }
    相当于
    var a;
    IEnumerator  e  =  GetList().GetEnumerator();
    while (e.MoveNext)
    {
        a = e.Current;
    }

    or 循环靠下标定位.    list[3] 相当于 *(list + 3).

    for(int i = 0; i < GetCount(); i++)
    {
      ....
    }
    相当于
    int i = 0;
    while(i < GetCount())
    {
      ...
    }

    for 循环每次循环会调用 GetCount() 来比较长度. 而 foreach 不考虑长度,只调用一次GetList().

     结论.

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

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

     并且foreach的时候会锁定集合中的对象.期间不能修改.

    若遍历的数据较多时,forEach效率较高,数量级较少是for循环效率较高

    如果只是读数据,优先选择foreach,因为效率高,而且代码简单,方便;

  • 相关阅读:
    63.C++异常
    62.C++文件操作list实现内存检索,实现两千万数据秒查
    61.C++文件操作实现硬盘检索
    ios之数据持久化
    ios NSRange
    安排
    接口隔离原则
    Liskon替换原则
    开放封闭原则
    单一职责原则
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/5538899.html
Copyright © 2011-2022 走看看