具有Arraylist的结构的vb.net 2003 Arraylist
我有两个结构 公共结构myResearchData 我在一个子系统中初始化它们 Dim MyResearchDataList作为新的ArrayList 将MyResearchData设置为MyResearchData MyResearchData.arraylistRData=新的ArrayList 将MyResearchSubData设置为MyResearchSubData 我有一个myResearchSubData的arraylist,它是MyResearchData.arraylistRData,并将其添加到MyResearchDataList中。但是当我清除MyResearchData.arraylistRData时,MyResearchDataList中的arraylist也被清除。我认为,一旦它被添加到MyResearchDataList中,它将保留arraylist,但它也被记录。下面是我所做的过程 MyResearchSubData.recordingDate=Date.ParseDate MyResearchSubData.book=book MyResearchSubData.page=第页 MyResearchSubData.year=年份 MyResearchSubData.fee=费用 将数据放入MyResearch子数据的结构中 MyResearchData.arraylistRData.AddMyResearchSubData 在MyResearchData.arraylistRData中添加了它 MyResearchDataList.AddMyResearchData 在MyResearchDataList中添加了它 MyResearchData.arraylistRData.Clear 清除了MyResearchData.arraylistRData以放入新数据,但它也清除了MyResearchDataList中的arraylist,并且没有旧的arraylist内容具有Arraylist的结构的vb.net 2003 Arraylist,vb.net,struct,arraylist,Vb.net,Struct,Arraylist,我有两个结构 公共结构myResearchData 我在一个子系统中初始化它们 Dim MyResearchDataList作为新的ArrayList 将MyResearchData设置为MyResearchData MyResearchData.arraylistRData=新的ArrayList 将MyResearchSubData设置为MyResearchSubData 我有一个myResearchSubData的arraylist,它是MyResearchData.arraylistRD
提前感谢那些能够帮助我解决此问题的人,因为实际上,添加到数组列表中的项目与通过引用添加的项目相同。您希望实际将每个项目的副本添加到arrayList中 我通常认为最简单的方法就是在循环过程中添加对象的克隆 为此,您可能需要实现iClonable以获得正确的副本。但是,在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
然后,您需要循环查看MyResearch子数据的原始列表,并将其克隆添加到第二个列表中。比如:
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
D.先生。。你能给我一个将一个arraylist克隆到另一个arraylist的示例代码吗当然,但你不需要克隆arraylist,而是克隆其中的项目。事实上,因为你使用了一个结构,所以你有两个选择。上面用示例进行了编辑。
For Each item as myResearchSubData in MyResearchData.arraylistRData
MyResearchDataAList.Add(CloneStructure(item))
Next