2011-11-08 2 views
1

Je sais qu'une instruction d'assignation faite ne crée pas d'objet, une référence à l'objet est faite à la place. Par exemple, je veux faire ce qui suit:Copier l'élément de copie XNA sans lui attribuer de référence

word.start = newWordPos.First.Value; 
word.end = newWordPos.Last.Value; 

Mais chaque fois que les valeurs de newWordPos.First.Value ou newWordPos.Last.Value est mis à jour, puis word.start et word.end sont mis à jour. Est-il possible de leur attribuer la valeur réelle afin que cela ne se produise pas?

+0

vous devez nous donner plus d'informations/code. Ce n'est pas clair à partir de ces deux lignes de code avec quels types vous travaillez, il est donc difficile de répondre à votre question atm .. Il semble que vous travailliez avec des types de valeurs Nullable ici? Encore une fois, nous ne pouvons que deviner à ce stade .. – MattDavey

Répondre

0

Étant donné que votre type est une classe, vous devez cloner l'objet, pas seulement attribuer une référence.

Le type lui-même doit fournir un mécanisme de création d'une copie en profondeur. Le framework fournit une interface (IClonable) permettant d'utiliser une seule méthode Clone - bien que la forme du clonage ne soit pas claire (ie: clone complet, etc).

+0

J'ai regardé autour de moi en ligne et j'ai trouvé un tas de sites qui en parlaient. Les données que je veux copier sont de type Vector2 fournies par XNA Framework. Je ne suis pas sûr de savoir comment implémenter la méthode pour la classe Vector2. – McAvoy

+2

@McAvoy: Comme c'est un XNA Vector2, c'est une structure. Il est déjà en train de faire une copie complète - donc vous n'avez pas besoin de le cloner. –

+0

alors pourquoi les valeurs changent-elles chaque fois que les vecteurs de la liste sont changés? – McAvoy