for循環與foreach的區別


for循環與foreach的區別

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;
}

  for 循環靠下標定位.    list[3] 相當於 *(list + 3).

for(int i = 0; i < GetCount(); i++)
{
  ....
}

=

int i = 0;

while(i < GetCount())
{
  ...
}

  

or 循環每次循環會調用 GetCount() 來比較長度. 而 foreach 不考慮長度,只調用一次GetList().

 

結論.

在固定長度或長度不需要計算的時候for循環效率高於foreach.

在不確定長度,或計算長度有性能損耗的時候,用foreach比較方便.

 

並且foreach的時候會鎖定集合中的對象.期間不能修改.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM