2017-10-09 91 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