Forum Clubic

Portée de variable et recursivité

Bonjour,

J’ai un problème avec une fonction recursive de ce style

    Sub mafonction(ByVal liste As List(Of Point))
        Dim copie As New List(Of Point)
        For i As Integer = 0 To liste.Count - 1
            copie = liste
            copie.Add(liste(i))
            mafonction(copie)
        Next
    End Sub

Le soucis c’est que les variables donnent n’importe quoi. Tout ce comporte comme si liste et copie étaient des variables public et du coup dans le for quand i passe pas exemple à 1, je ne retouve pas la même valeur de liste que lorsque i était à 0
Edité le 17/01/2010 à 20:32

Je ne connais pas VB, mais je suppose que ça passe les choses par références.

En l’occurrence, copie = liste => modifie la référence de copie vers liste, ie: ne fait pas une recopie des éléments de liste dans copie.

ok mais comment je dois faire pour copier autrement que par reference ?

Bonne question. C’était juste une suggestion, je rappelle que je ne fais pas de VB.

Si tu veux recopier ta liste, tu peux faire :

copie = new List(Of Point)(liste)

Ca marche ! soyez benis je me suis arraché les cheveux avec cette connerie