for和foreach的區別

2022-09-02 10:06:10 字數 1377 閱讀 2380

public

class

program

public

void

for()

;for (int i = 0; i < array.length; i++)

}public

static

void

foreachonarray()

;foreach (string s in

array)

}}

再加點**,在迴圈中試圖更改所操作的值:

public

class

program

public

void

for()

;for (int i = 0; i < array.length; i++)

}public

static

void

foreachonarray()

;foreach (string s in

array)

}}

以上**,可以看出,在foreach(...)迴圈裡盡量不要更改操作的源,在for(...)迴圈裡則可以。

for和foreach的區別:

for迴圈並不依賴於陣列或其他形式的組式資料結構,只是簡單的在呼叫了**後,進行乙個判斷,判斷是否要繼續。(非常類似於do..while和while迴圈)

foreach迴圈如果作用在乙個基於system.array的型別之上的陣列,編譯器會自動優化成與for迴圈非常類似的**,只是呼叫的指命有細微的差別,並且檢查(包括編譯階段和執行時)會比for嚴格的多。

foreach迴圈作用在乙個非system.array型別上(且一定要是實現了ienumerable介面的類),會先呼叫ienumerable.getenumerator()方法獲取乙個enumertor例項,再在獲取的enumertor例項上呼叫getcurrent()和movenext()方法,最後判斷如果enumertor例項如果實現了idispose介面,就自動呼叫idispose.dispose()方法!

for和foreach建議用法:

在system.array做賦值操作時,盡量不要用foreach()。

foreach比for更靈活。(可在movenext()和getcurrent()裡編寫自己的**)自己編寫的類如果實現了ienumerable介面的話,就可以用foreach迴圈了,而不管內部是否有乙個真實的陣列,並且可以自定義迴圈的規則。

從oo的原則看,foreach迴圈更適於多數情況的使用。(事實上,foreach的實現是典型的iterator模式,想用統一的呼叫迴圈介面時,foreach是最佳的選擇)

fori和foreach的區別

foreach遍歷時刪除為什麼會有異常 通過角標和size對比判斷是否有下乙個 public boolean hasnext suppresswarnings unchecked public e next public void remove catch indexoutofbound cepti...

map 和forEach 的區別

對陣列進行迴圈,相當於直接for迴圈,沒有返回值,不能對它進行加工,只是單純的迴圈顯示return無效 item值,index索引,arr該陣列 一般沒用 arr.foreach item,index,arr 對陣列的每一項進行加工,加工完成之後返回乙個新的陣列 注意 map 不會對空陣列進行檢測。...

map和forEach的區別

map 返回其原始陣列的新陣列,但是 foreach 卻沒有。但是它們都確保了原始物件的不變性。1,2,3 map d d 1 2,3,4 1 2,3 foreach d d 1 undefined 如果更改陣列內的值,foreach 不能確保陣列的不變性。這個方法只有在你不接觸裡面的任何值時,才能...