Pourquoi la valeur de cette variable est modifiée

Robin233 Messages postés 3 Date d'inscription dimanche 5 octobre 2014 Statut Membre Dernière intervention 9 octobre 2014 - 9 oct. 2014 à 18:27
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 9 oct. 2014 à 19:10
Bonjour,
Voici un petit exemple:
 Private Structure struct_test
Public Name As String
Public value1 As Integer
Public value2() As Integer
End Structure
'''''''
myList = New List(Of struct_test)

Dim myTest As struct_test
myTest.Name = "coucou"
myTest.value1 = 1234
ReDim myTest.value2(0)
myTest.value2(0) = 5678

myList.Add(myTest)

myTest.Name = "bybye"
myTest.value1 = 1111
myTest.value2(0) = 2222

MsgBox(myList(0).Name & vbCrLf & myList(0).value1 & vbCrLf & myList(0).value2(0))


A votre avis sans tester quelles sont les valeurs donnés par la MessageBox ?

Le résultat me surprends et je ne vois pas comment résoudre ce problème en gardant une structure, existe-il une solution pour que la valeur ne soit pas modifiée?

2 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
9 oct. 2014 à 18:50
Bonjour, renseigne toi sur le passage de paramètres par valeur et par référence.

En .Net, les types de base sont passés par défaut par valeur (sauf à utiliser le mot clé ByRef), alors que tous les autres sont passés par référence (sauf à utiliser le mot clé ByVal)
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
9 oct. 2014 à 18:52
Ha non pardon, j'ai lu ton code en diagonal.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
9 oct. 2014 à 19:10
Apres avoir testé ton code je réitère.
C'est dans le même principe.
Un tableau n'est pas un type de base, donc c'est un type référence.
0
Rejoignez-nous