foreach 和 for 迴圈的區別

2022-02-17 20:38:00 字數 764 閱讀 5866

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)

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 ...