for循環(huán)與foreach的區(qū)別
foreach 依賴 IEnumerable.
第一次 var a in GetList() 時(shí)調(diào)用 GetEnumerator 返回第一個(gè)對(duì)象并賦給a,
以后每次再執(zhí)行 var a in GetList() 的時(shí)候調(diào)用 MoveNext.直到循環(huán)結(jié)束.
期間GetList()方法只執(zhí)行一次.
+ View Code
for 循環(huán)靠下標(biāo)定位. list[3] 相當(dāng)于 *(list + 3).
+ View Code
or 循環(huán)每次循環(huán)會(huì)調(diào)用 GetCount() 來比較長(zhǎng)度. 而 foreach 不考慮長(zhǎng)度,只調(diào)用一次GetList().
結(jié)論.
在固定長(zhǎng)度或長(zhǎng)度不需要計(jì)算的時(shí)候for循環(huán)效率高于foreach.
在不確定長(zhǎng)度,或計(jì)算長(zhǎng)度有性能損耗的時(shí)候,用foreach比較方便.
并且foreach的時(shí)候會(huì)鎖定集合中的對(duì)象.期間不能修改.
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持綠夏網(wǎng)!