2017-10-09 92 views
1

我有一个集合“entity.DestinationDetailscollection”。然后我将这个集合复制到另一个集合“DestinationCollection”中,如下面的代码所示。但是,无论何时清除源集合(即entity.DestinationDetailscollection),集合“DestinationCollection”也将被清除。请帮忙。收集清除源集合时清除

Dim DestinationCollection As New Collection(Of StudentDTO) 

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

entity.DestinationDetailscollection.Clear() 
+1

这是一个名字太吸引人的奇怪类。你应该赞成List(Of StudentDTO)。 –

回答

1

如果你看一下documentation of Collection(Of T),你会发现,Collection(Of T)构造不会复制作为参数提供的源集合。它只是作为包装。清理一个将清除另一个。

此行为不同于List(Of T)构造函数,它实际上将源集合元素(仅将对象引用复制)复制到新的List对象中,从而创建单独的列表。

尽管您可以随时将整个列表手动复制到新的集合对象(简单循环),但您应该在Collection(Of T)之前提供List(Of T)

作为一个方面说明,你实例化你的两次Collection。你应该把它放在一条线上:

Dim DestinationCollection As New Collection(Of StudentDTO)(entity.DestinationDetailscollection) 

你应该用这一行代替你的前两行。

+0

好的谢谢....我用循环将集合复制到另一个集合,它的工作。 – Che