Ne pas lier 2 variables

Résolu
madaal Messages postés 17 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 6 mai 2011 - 7 mars 2011 à 21:56
madaal Messages postés 17 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 6 mai 2011 - 8 mars 2011 à 16:06
voilà j'ai une classe :

Public Class Test

        Public id As Long

        Public Nom As String
     
End Class


J'aimerai dupliquer sans lier. je m'explique. actuellement je fais :

Dim A as New Test
A.id = 1
A.Nom = "Test1"
Dim B as New Test = A
B.Nom = "Test2"

ET là je me retrouve avec A et B qui sont liés et donc quand je change B.Nom Je Change aussi A.Nom. Comment fiare pour l'éviter ?

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 mars 2011 à 22:26
Bonjour,

Dim B as New Test = A
est
Dim B as Test = A

Voir :
http://www.vbfrance.com/codes/CLONER-OBJET-TRES-SIMPLEMENT_29859.aspx

Mon site
3
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
7 mars 2011 à 22:33
Bonsoir,


Dim B as New Test = A 

Tu supprime "=A" et tu trouve un autre moyen d'initialiser id et nom

Soit par une fonctio de ce genre

Sub Duplique(Source as test, Cible as test)
cible.id = source.id  
cible.Nom = source.Nom  
End Sub


En faisant = sur un objet il me semble que tu lui donne un pointeur indiquant la position de l'objet A dans la mémoire.
Tu ne duplique donc pas l'objet A, tu lui donne le même pointeur en mémoire.

Bonne prog CGSI3
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
7 mars 2011 à 22:37
Trop Rapide NHenry !
Merci pour le lien
0
madaal Messages postés 17 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 6 mai 2011
8 mars 2011 à 16:06
Merci pour ta réponse CGSI3 mais t'a solution ne me convient pas vraimetn car mon code est plus compliqué et j'ai 3 classe qui s'entremellent.
0
Rejoignez-nous