2010-11-16 2 views

Répondre

2

Non, s'il s'agit d'une classe, la plupart des objets sont, seule une référence au même objet est stockée dans la collection. Si c'est un type de valeur, comme int, double et structs une copie est faite (pas une copie profonde, si la structure a une référence à un objet de classe qui à son tour ne sera pas copié).

Edit:
Pour copie complète des objets que vous devez d'abord créer une fonction de copie en profondeur.
Jetez un oeil à Create a Deep Copy in C# ou How to make a deep copy in C# ?
Ensuite, vous pouvez exécuter votre méthode de copie profonde avant d'ajouter des éléments à votre collection.

Remarque
Il est pas très souvent que vous avez vraiment besoin d'une vraie copie en profondeur. Souvent, il est préférable de repenser le flux de données dans votre application.

+0

Alors comment avoir une collection copiée en profondeur? – user496949

1

Si vous demandez ce qui se passe avec la collection, il dépend:

Normalement, une collection sera créée avec des fentes « vides », afin d'ajouter à cela ne causera pas une nouvelle collection avec un nouveau taille à créer.

Si, toutefois, l'ajout d'un nouvel élément dépasse cette taille, une nouvelle collection sera créée et tous les éléments y seront copiés.


Si vous demandez au sujet de l'article lui-même, encore une fois cela dépend:

S'il est un type de valeur (int, double, struct par exemple), la valeur sera copiée, si elle est un type de référence, une copie de la référence au même objet sera utilisée.

+0

@Downvoter - veuillez expliquer. – Oded

Questions connexes