Bonjour a tous,
voila en fait je passe un objet a en paramètre d'un constructeur d'un objet b et normalement si je ne me trompe pas cet objet a devrait etre passé par référence, donc toute modification de cette objet a dans l'objet b entraine une modification de l'objet a dans toutes les classes où il est utilisé.
Ce que je ne comprend pas c'est que cela n'a pas l'air de se passé dans le cas de mon application. Voici des bouts de code pour vous montrer comment je m'y prend:
fichier1.cs: (ici je fait un appel a une classe et je passe un objet en param)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private CDroit droit; ... frmLogin fLogin = new frmLogin(this.droit); fLogin.ShowDialog();
fichier2.cs: (ici je modifie l'objet passé en param dans le constructeur)
Or l'objet n'est pas modifié n'est pas modifié dans le fichier1. Et je ne comprend pas pourquoi vu que les objets devrait etre passé par reference donc dans le constructeur je ne copie pas un nouvel objet mais je fait pointé un objet vers la reference d'un autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 private CDroit _droit; ... public frmLogin(CDroit d) { InitializeComponent(); // lecture du fichier de configuration this.opt = new COption(); this.opt.loadXML(); // droit this._droit = d; // garde en mémoire la ref de l'objet // ajout des logins this.ajoutLogin(); } ... private bool verifLogin() { ... // definition du droit this._droit = new CDroit(droit); // ici je modifie l'objet du param constructeur ... return (true); }
Aidez-moi s'il vous pait...
Merci par avance.
Partager