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

    for循环与foreach的区别

    foreach 依赖 IEnumerable.

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

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    foreach   (var a in GetList())
    {
        ...
    }
     
    =
     
    var a;
    IEnumerator  e  =  GetList().GetEnumerator();
    while (e.MoveNext)
    {
        a = e.Current;
    }

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int i = 0; i < GetCount(); i++)
    {
      ....
    }
     
    =
     
    int i = 0;
     
    while(i < GetCount())
    {
      ...
    }

      

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

    结论.

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

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

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

  • 相关阅读:
    变量声明和定义的关系
    STL之Vector
    STL之顺序容器
    类成员函数可以为回调函数吗
    排序
    名字查找
    Java 写 Log
    Spring 框架中注释驱动的事件监听器详解
    Centos7 安装gitLab
    世界经济史是一部基于假象和谎言的连续剧
  • 原文地址:https://www.cnblogs.com/jc535201285/p/6518387.html
Copyright © 2011-2022 走看看