清除Source集合时清除集合

时间:2017-10-09 15:16:06

标签: vb.net winforms collections

我有一个集合," entity.DestinationDetailscollection"。然后我将这个集合复制到另一个集合中," DestinationCollection"如下面的代码所示。但每当我清除源集合(即entity.DestinationDetailscollection)时,集合" DestinationCollection"也被清除了。请帮忙。

Dim DestinationCollection As New Collection(Of StudentDTO)

DestinationCollection = New Collection(Of StudentDTO)(entity.DestinationDetailscollection)

entity.DestinationDetailscollection.Clear()

1 个答案:

答案 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)

您应该用这一行替换前两行。