[C#] Utilisation des propriétés

Utilisation des propriétés [C#] - C#/.NET managed - Programmation

Marsh Posté le 07-06-2007 à 15:20:43    

Hello,
 
Dans une application j'utilise une propriété en lecture seule, me renvoyant un objet. J'utilise cette propriété en instanciant un nouvelle objet. Le problème est que je fais des modifications sur l'objet instancié, et les modifications sont aussi appliquées sur l'objet source de la propriété....
 
Au niveau de la propriété:

Code :
  1. private XmlDocument _xmlContent;
  2.         public XmlDocument _XmlContent
  3.         {
  4.             get
  5.             {
  6.                 return _xmlContent;
  7.             }
  8.         }


 
Et au niveau de l'instanciation:

Code :
  1. public Message ( )
  2.         {
  3.             _specificXmlContent = XmlStructure._InstanceXmlStructure._XmlContent;
  4.         }


 
Des que je touche à _specificXmlContent, les changements sont répercutés sur _xmlContent... Je pensais qu'une propriété en lecture renvoyait seulement une valeur, mais là apparemment c'est directement une référence sur l'objet... Pour info, _InstanceXmlStructure est une propriété statique renvoyant un champ lui aussi statique. Peut-être le problême vient de là.  
 
En résumé, j'aimerais que les changements effectués sur _specificXmlContent ne soient pas répercutés sur _xmlContent. Si vous avez des idées, merci d'avance...
 
 

Reply

Marsh Posté le 07-06-2007 à 15:20:43   

Reply

Marsh Posté le 07-06-2007 à 15:47:15    

ben tu fais une deepcopy de ta variable au lieu de renvoyer une référence dessus [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-06-2007 à 21:08:03    

Bah justement, je pensais pas que ça renvoyait une référence, mais plutôt une copie de l'objet référencé... En fait nan...

Reply

Marsh Posté le 08-06-2007 à 09:39:30    

burtonien a écrit :

Bah justement, je pensais pas que ça renvoyait une référence, mais plutôt une copie de l'objet référencé... En fait nan...


 
 
http://www.ecma-international.org/ [...] ma-334.pdf ;)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Marsh Posté le 08-06-2007 à 10:23:52    

burtonien a écrit :

Bah justement, je pensais pas que ça renvoyait une référence, mais plutôt une copie de l'objet référencé... En fait nan...


Il n'existe aucun langage moderne/sain qui fasse des passages par valeur (donc des copies) pour les gros objets, ils font tous des passages de référence par valeur (ils transmettent une copie de la référence, donc la référence est différente, mais ça pointe sur le même objet), parce que les coûts des copies peuvent être (et sont souvent) monstrueux, alors qu'un passage de référence par valeur a un coût quasi nul (on copie un entier, grosso merdo...)


Message édité par masklinn le 08-06-2007 à 10:24:00

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 08-06-2007 à 12:09:16    

Ok, merci pour ces explications  :)  
 
Pour info, j'ai réussi à cloner le noeud avec une deep copy. Apparemment le problème est corrigé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed