我知道它通常是一個很大的No-No來修改你正在迭代的集合,但不幸的是我沒有設計我試圖修改的代碼。到處都是以下事情:InvalidOperationException VB.Net通用集合?
for each log in Logs
logs.Delete(log.LogId)
Next
刪除幾乎只是從數據庫中刪除日誌,並將其從集合中刪除。以前,日誌對象使用的是非通用集合。我改變它使用集合(日誌),所以我可以LINQify對象。現在,每次我調用下一個/ .MoveNext被調用後第一次刪除發生以下錯誤: InvalidOperationException: 「集合被修改;枚舉操作可能不會執行。」
我明白爲什麼我得到錯誤,但我不明白爲什麼它從未發生與非通用版本。無論如何要解決這個錯誤?我真的沒有辦法花時間去改變每個這樣的刪除日誌(代碼庫很大)的地方。我想刪除Delete函數中的代碼,將它從當前集合中刪除,因爲我假設沒有代碼在集合完成後對集合進行任何操作,但是您知道當您假設時發生了什麼。
您使用FOR EACH在「非一般都'實施? –
是的,這種方式日誌總是被刪除。只是不明白爲什麼之前沒有例外。 – coding4fun
什麼是非泛型集合類型? – msarchet