[C#]Passage d'objet en parametre
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:
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)
Code:
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);
} |
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.
Aidez-moi s'il vous pait...
Merci par avance.