Vb.net 当集合不可用时引发集合修改异常';t修改

Vb.net 当集合不可用时引发集合修改异常';t修改,vb.net,enumeration,Vb.net,Enumeration,我遇到了一个异常,我不理解这里的代码: Dim folderList As List(Of String) = _folderList For Each folder In folderList destinationFolder = destinationFolder + "/" + folderName localFilePath = lbl_folderPath.Text + "/" + folder alterFolderList(localFilePath

我遇到了一个异常,我不理解这里的代码:

Dim folderList As List(Of String) = _folderList

For Each folder In folderList

    destinationFolder = destinationFolder + "/" + folderName
    localFilePath = lbl_folderPath.Text + "/" + folder

    alterFolderList(localFilePath)

    ...

Next
我有一个全局变量
\u folderList
,我将它复制到另一个变量
folderList
,如代码的第一行所示。调用最后一个方法(
alterFolderList
)时,它会更改变量
\u folderList
。调试时,当我第一次到达每个的
末尾时(在
下一个
),我得到一个异常,即集合被修改了,而实际上并没有,因为调用的方法没有更改它。在调试时,调用该方法后,我将鼠标悬停在变量
folderList
上方,看到它已更改,现在与
\u folderList
相同,但不应该更改,因为变量
folderList
对于每个
枚举等于
之外的
\u folderList


这是怎么发生的?如何解决这个问题?

要复制列表,您无法分配它。你应该复制元素。试试这个

Dim folderList As New List(Of String)
folderList.AddRange(_folderList)

当您将一个列表分配给另一个列表时,它是ByRef。您可能需要将元素复制到新列表听起来像_folderList实际上不是folderLst内容的副本,而只是引用的副本,因此当您更改其中一个时,您可以同时更改这两个内容。