я получаю исключение, которое я не понимаю в этом кусочке кода здесь:Коллекция модифицирована исключение выбрасывается, если коллекция не была изменена
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
.
Как это происходит? И как обойти это?
, когда вы назначаете один список другому, это ByRef. вам может понадобиться скопировать элементы в новый список. – bansi
звучит как _folderList, на самом деле не является копией содержимого folderLst ** **, а просто копией ссылки, поэтому при ее изменении вы меняете оба. – Plutonix