Bonjour à tous,
J'ai un problème dans mon application avec les passages par valeur d'objets de classe. À l'aide du déboggueur j'ai vu qu'en fait ma fonction modifiait le paramètre de l'appelant :
Voici mon code:
Sachant que la fonction commence par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //jtir est une variable de type Scenario_joueurs[] Fonction(jtir); //jtir a pris les valeurs de jpen
J'ai rajouté la variable jpen pour essayer d'éviter le problème mais ça ne change rien, ça doit etre un problème de c# que j'ai du zapper.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Fonction(Scenario_joueur[] jtir) { Scenario_joueur[] jpen = new Scenario_joueur[6]; int y = 0; while (y < 6) { jpen[y] = jtir[y]; y++; } }
Donc dans ce cas la variable jpen est créé et je met dedans la valeur de jtir.
Dans ma fonction, jpen est modifié et se remplit avec des valeurs qui sont justes. cependant la portée de la variable jpen semble poser problème : à la fin de ma fonction tout s'est bien passé sauf que dans la fonction appelante la variable jtir contient désormais les memes valeurs que jpen alors que je ne l'ai jamais modifié.
En clair le code se comporte comme si j'avais fait un passage par référence pourtant je ne pense pas l'avoir fait.
Peut etre que qu'il faut faire une surcharge de l'opérateur '=' pour ma classe histoire qu'il copie chaque valeur et non l'adresse ?
J'espère avoir exposé clairement mon problème.
Si vous pouviez m'aider.
Merci d'avance,
Partager