未修改集合时抛出的集合修改异常

时间:2014-02-21 12:52:08

标签: 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)

    ...

Next

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

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

1 个答案:

答案 0 :(得分:2)

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

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