Это происходит потому, что на самом деле к списку массивов добавляются те же элементы, что и по ссылке.Вы действительно хотите добавить копию каждого элемента в свой arrayList.
Я обычно нахожу самый простой способ сделать что-то подобное, это добавить клон объекта во время цикла.
ДляДля этого вам может понадобиться реализовать ICloneable, чтобы получить правильную копию.На уровне myResearchSubData, однако, кажется, что вы можете просто использовать метод memberwiseClone.
Если вы измените класс на класс вместо структуры, вы можете использовать клон следующим образом:
Public Class myResearchSubData
Implements ICloneable
Public researchDescription As String
Public recordingDate As Date
Public book As String
Public page As String
Public year As String
Public fee As String
Public Function Clone() As Object Implements System.ICloneable.Clone
Return Me.MemberwiseClone
End Function
End Class
Тогда вы захотите перебрать свой исходный список myResearchSubData и добавить его клон во второй список.Примерно так:
For Each item as myResearchSubData in MyResearchData.arraylistRData
MyResearchDataAList.Add(CType(item.Clone, myResearchSubData))
Next
Если вы хотите продолжать использовать структуры, я бы использовал тот же тип цикла и создал бы функцию, которая создает новый myResearchSubData и копирует данные из оригинала в новый..
For Each item as myResearchSubData in MyResearchData.arraylistRData
MyResearchDataAList.Add(CloneStructure(item))
Next