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

  • 相关阅读:
    开源框架/软件汇总
    如何查看Maven项目的jar包依赖
    我的前端技术栈(2018版)
    解决在Mac上用pyenv安装python3失败的问题
    学习jenv
    学习sbtenv
    解决MAC下修改系统文件没权限的问题
    学习Spring Boot
    学习音标
    C# 对List中的Object进行排序
  • 原文地址:https://www.cnblogs.com/wangyblzu/p/5739994.html
Copyright © 2011-2022 走看看