我发现了一个例外,我不要在此位的代码在这里了解抛出:收集修改例外集合时没有被修改
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