我發現了一個例外,我不要在此位的代碼在這裏瞭解拋出:收集修改例外集合時沒有被修改
Dim folderList As List(Of String) = _folderList
For Each folder In folderList
destinationFolder = destinationFolder + "/" + folderName
localFilePath = lbl_folderPath.Text + "/" + folder
alterFolderList(localFilePath)
...
Next
我有一個全局變量_folderList
我複製到另一個變量,folderList
,如我的代碼的第一行所示。當最後一個方法(alterFolderList
)被調用時,它會改變變量_folderList
。在調試時,當我第一次到達for each
的末尾時(在Next
),我得到了集合被修改的異常,當它實際上並不是因爲調用的方法不會改變它。調試時,調用方法後,我將鼠標懸停在變量folderList
上方,我發現它已更改,現在與_folderList
相同,但不應該這樣做,因爲變量folderList
等於枚舉之外的_folderList
。
這是怎麼發生的?以及如何解決這個問題?
當您將一個列表分配給另一個列表時,它是ByRef。您可能需要將元素複製到新列表中 – bansi
聽起來像_folderList實際上不是文件夾最內容**的副本,而只是參考的副本,因此當您更改一個時,您將同時更改這兩個參數。 – Plutonix