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()) { ... }
for 迴圈每次迴圈會呼叫 GetCount() 來比較長度. 而foreach 不考慮長度,只呼叫一次GetList().
結論.
在固定長度或長度不需要計算的時候for循環效率高於foreach.
在不確定長度,或計算長度有性能損耗的時候,用foreach比較方便.
並且foreach的時候會鎖定集合中的物件.期間不能修改.
以上是深入了解for迴圈與foreach的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!