2 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)槟愕募显诒闅v過(guò)程中發(fā)生了變化了。 一個(gè)集合在遍歷時(shí)是不允許同步發(fā)生列表改變的。

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
《C#語(yǔ)言規(guī)范》 8.8.4 foreach 語(yǔ)句 在 foreach 語(yǔ)句執(zhí)行期間,迭代變量表示當(dāng)前正在為其執(zhí)行迭代的集合元素。如果嵌入語(yǔ)句試圖修改迭代變量(通過(guò)賦值或 ++ 和 -- 運(yùn)算符)或?qū)⒌兞孔鳛?ref 或 out 參數(shù)傳遞,則將發(fā)生編譯時(shí)錯(cuò)誤。 《規(guī)范》給出了foreach的背后擴(kuò)展形式 E enumerator = (collection).GetEnumerator(); try { while (enumerator.MoveNext()) { ElementType element = (ElementType)enumerator.Current; statement; } } finally { IDisposable disposable = enumerator as System.IDisposable; if (disposable != null) disposable.Dispose(); } 并說(shuō),enumerator 變量是一個(gè)臨時(shí)變量,它在嵌入 statement 中既是不可訪問(wèn)的,也是不可見(jiàn)的,元素變量在嵌入 statement 中是只讀的。 如果要進(jìn)一步探究,請(qǐng)先了解迭代模式。
- 2 回答
- 0 關(guān)注
- 671 瀏覽
添加回答
舉報(bào)