2017-10-09 3 views
1

J'ai une collection "entity.DestinationDetailscollection". J'ai ensuite copié cette collection à une autre collection, "DestinationCollection" comme indiqué dans le code ci-dessous. Mais chaque fois que j'efface la collection source (c'est-à-dire entity.DestinationDetailscollection), la collection "DestinationCollection" est également effacée. S'il vous plaît aider.La collection est effacée lors de l'effacement de la collection Source

Dim DestinationCollection As New Collection(Of StudentDTO) 

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

entity.DestinationDetailscollection.Clear() 
+1

C'est une classe étrange avec un nom trop séduisant. Vous devriez préférer List (Of StudentDTO). –

Répondre

1

Si vous regardez le documentation of Collection(Of T), vous trouverez que le constructeur Collection(Of T) ne copie pas la collection source fournie comme paramètre. Il agit juste comme un emballage. Donc, dégager l'un effacera l'autre.

Ce comportement est différent du constructeur List(Of T), qui copie réellement les éléments de la collection source (seules les références d'objet sont copiées) dans le nouvel objet List et crée ainsi une liste distincte.

Bien que vous puissiez toujours copier manuellement toute la liste dans le nouvel objet de collection (une simple boucle), vous devez préférer List(Of T) sur Collection(Of T).

En note, vous instanciez deux fois votre Collection. Vous devriez dod en une ligne:

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

Vous devez remplacer vos deux premières lignes avec celui-ci en ligne.

+0

ok merci .... j'ai utilisé la boucle pour copier la collection à une autre collection et cela a fonctionné. – Che