foreach 依賴 ienumerable.
第一次 var a in getlist() 時 呼叫 getenumerator 返回第乙個物件 並 賦給a,
以後每次再執行 var a in getlist() 的時候 呼叫 movenext.直到迴圈結束.
期間getlist()方法只執行一次.
foreach (var a ingetlist())
相當於var
a;ienumerator e =getlist().getenumerator();
while
(e.movenext)
or 迴圈靠下標定位. list[3] 相當於 *(list + 3).
for(int i = 0; i < getcount(); i++)相當於int i = 0
;while(i
for 迴圈每次迴圈會呼叫 getcount() 來比較長度. 而 foreach 不考慮長度,只呼叫一次getlist().
結論.在固定長度或長度不需要計算的時候for迴圈效率高於foreach.
在不確定長度,或計算長度有效能損耗的時候,用foreach比較方便.
並且foreach的時候會鎖定集合中的物件.期間不能修改.
若遍歷的資料較多時,foreach效率較高,數量級較少是for迴圈效率較高
如果只是讀資料,優先選擇foreach,因為效率高,而且**簡單,方便;
for迴圈和foreach迴圈的比較
1.在固定長度或者長度不需要計算的時候for迴圈效率高於foreach,foreach在迴圈次數未知或者計算起來較複雜有損效能的情況下效率比for迴圈高。2.foreach適用於只是進行集合或陣列遍歷,for則在較複雜的迴圈中效率更高。什麼是複雜環境呢?就是要對原陣列進行修改時。3.foreach與...
forEach和map和filter的區別總結
最大的區別 foreach不會反悔新的陣列,而是在原陣列的基礎上改變陣列,可以用於陣列的修改 ag var arr new array arr 1,2,3,4,5,6 arr.foreach item,index,a console.log item,index,a 子元素,索引,原陣列 arr i...
增強for迴圈 foreach迴圈
1 作用 簡化迭代器的書寫格式。注意 foreach迴圈的底層還是使用了迭代器遍歷。2 適用範圍 如果是實現了iterable介面的物件或者是陣列物件都可以使用foreach迴圈。3 格式 for 資料型別 變數名 遍歷的目標 示例 1 public static void main string ...