Probléme de tableau

Résolu
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010 - 5 janv. 2009 à 22:16
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010 - 8 janv. 2009 à 18:51
Bonjour a tous ,
Je n'ai pas bien l'habitude d'utiliser les tableau et je me trouve dans une situation que je ne comprend pas.
J' aimerai que vous regardiez la petite boucle suivante :
        Dim Array1() As Integer = New Integer(8) {0, 0, 0, 0, 0, 0, 0, 1, 0}
        Dim Array2() As Integer = New Integer(8) {0, 0, 0, 0, 0, 0, 0, 0, 0}
        For i = 0 To 8
            Array2 = Array1
            If Array1(i) = 0 Then
                Array2(i) = 1
                'suite du code dépendant de Array(2)
            End If
        Next i
Dés la première itération,c'est l'effet inverse de ce que je souhaiterai obtenir qui se produit : Array2 Array1> Array2 = (0,0,0,0,0,0,1,0) => TOUT VA BIEN JUSQUE LAArray2(i) 1> Array(0) = 1 => Array2 = (1,0,0,0,0,0,1,0) => OK..mais a ce moment la, la valeur de Array1 change également pour (1,0,0,0,0,0,1,0). Cela n'est pas très logique, ou est-ce moi qui suit passé a coté de quelque chose ?

Je suppose qu'il y a une explication tout a fait rationnelle,alors j'aimerai avoir votre "diagnostic" ^^.
Merci d'avance .

4 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
5 janv. 2009 à 22:39
Salut,

En faisant Array1 = Array2, tu ne fais pas que de copier les valeurs d'un tableau dans un autre.

Je m'explique




Dim a(3) As String





Dim b(3) As String








b=a 

      
Copie le tableau a dans b








Attention : il
copie les références (l’adresse, l’endroit où se trouve la variable) et non pas
la valeur de cette variable, ce qui fait que si tu modifies b(3), a(3) sera
aussi modifié.





Car lorsque tu assignes une variable
tableau à une autre, seul le pointeur (l’adresse en mémoire) est copié.



++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
3
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010
5 janv. 2009 à 22:30
Oh
Je vient de découvrir le méthode Clone qui résout le probléme.
Mais alors, lorsque l'on utilise l'opérateur '=' entre deux tableaux, est ce que cela les "lies" l'un a l'autre ? Cela veut dire la moindre modification effectuer sur l'un est automatiquement répercutée sur l'autre ? Je ne voit pas bien l'interet d'une telle situation. Pourquoi l' opérateur '=' ne copierai t-il pas tout simplement la valeur du second dans le premier tableau .
Bon, et bien bonne fin de soirée et désolé pour ce post inutile.
0
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010
6 janv. 2009 à 20:56
Je me permet de réutiliser mon topic de la veille pour un autre probléme avec les tableaux.
Une fois de plus, mes maigres connaissances en vb ont atteint leurs limites .
Je vais faire de mon mieux pour essayer me faire comprendre.
Considérons un tableau a deux dimensions Ary(x,y).
Ce tableau est composé de x + 1 "lignes" et  de y + 1 "colonnes", soit nécessairement  (x + 1) * (y + 1) éléments au total.
Je ne sais pas encore ce que je cherche, alors je l'appellerai "tableau de tableaux". C'est a dire que chaque "ligne" puisse contenir un nombre indépendant d'éléments, et non obligatoirement autant que de "colonnes".
Par exemple :
[ [1 0 1 0 1 0]
  [1 0 1 0]
  [1 0 1 0 1 0 1] ]
Avec un tableau bidimensionnel "classique", je me retrouverai avec ceci :
[ 1 0 1 0 1 0 0

  1 0 1 0 0 0 0

  1 0 1 0 1 0 1 ]
En plus de cela, c'est un "tableau de tableaux" d'une structure personnalisée dont j'aurai besoin et non de simples entiers.
Avez vous une alternative a me proposer ?
0
Vianneyp Messages postés 82 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2010
8 janv. 2009 à 18:51
J'ai trouvé ma réponse sur MSDN :
Tableaux en escalier dans Visual Basic
Je le met ici en espérant que cela pourra étre d'une quelconque utilité.
Encore merci et @+
0
Rejoignez-nous