我有一个集合," entity.DestinationDetailscollection"。然后我将这个集合复制到另一个集合中," DestinationCollection"如下面的代码所示。但每当我清除源集合(即entity.DestinationDetailscollection)时,集合" DestinationCollection"也被清除了。请帮忙。
Dim DestinationCollection As New Collection(Of StudentDTO)
DestinationCollection = New Collection(Of StudentDTO)(entity.DestinationDetailscollection)
entity.DestinationDetailscollection.Clear()
答案 0 :(得分:1)
如果查看documentation of Collection(Of T),您会发现Collection(Of T)
构造函数不会复制作为参数提供的源集合。它只是一个包装器。因此,清除另一个将清除另一个。
此行为与List(Of T)
构造函数不同,后者实际上将源集合元素(仅复制对象引用)复制到新的List对象中,从而创建单独的列表。
虽然您总是可以手动将整个列表复制到新的集合对象(一个简单的循环),但您应该优先List(Of T)
而不是Collection(Of T)
。
作为旁注,您要将Collection
实例化两次。你应该把它放在一行:
Dim DestinationCollection As New Collection(Of StudentDTO)(entity.DestinationDetailscollection)
您应该用这一行替换前两行。