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() 來(lái)比較長(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í)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持!
【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。