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

これはあまりにも魅力的な名前の変わったクラスです。あなたはリスト(StudentDTOの)を好むべきです。 –

答えて

1

あなたはdocumentation of Collection(Of T)を見れば、あなたはCollection(Of T)コンストラクタは、パラメータとして供給されたソースコレクションをコピーしないことがわかります。それは単にラッパーとして機能します。したがって、1つをクリアするともう一方がクリアされます。

この動作は、実際にソースコレクション要素をコピーする(オブジェクト参照のみがコピーされる)コンストラクタとは異なり、新しいリストオブジェクトに追加され、別のリストが作成されます。

リスト全体を手動で新しいコレクションオブジェクト(単純なループ)にコピーすることはできますが、List(Of T)Collection(Of T)よりも優先してください。

補足として、Collectionを2回インスタンス化しています。

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

最初の2行をこの1行に置き換える必要があります。

+0

okありがとう....私はループを使用して別のコレクションにコレクションをコピーしています。 – Che

関連する問題