Variables pointant vers la même valeur

Variables pointant vers la même valeur - C#/.NET managed - Programmation

Marsh Posté le 09-02-2006 à 09:35:41    

Boujour à tous,
 
Je suis en train de créer une méthode Clone() pour l'une de mes classes.
Je voudrais que l'un des membres  de cette classe soit 'synchronisé' entre deux classes clonées (si je change la valeur dans une classe, cette valeur change identiquement dans ses clones).
 
Ce membre est de type boolean.
 
En c++, j'aurais utilisé un pointeur vers un bool. Mais ici, en C#, je vois pas comment je peux faire ça de manière simple...
 
Si vous avez une idée...
 
Un tout grand merci d'avance,
 
A+ ;)
 
BigBulle...

Reply

Marsh Posté le 09-02-2006 à 09:35:41   

Reply

Marsh Posté le 09-02-2006 à 10:49:39    

slt
tu nous montre ton code stp?

Reply

Marsh Posté le 09-02-2006 à 11:12:33    

Bien sur :)!
 

Code :
  1. public class Class1()
  2. {
  3.    private bool flag = false;
  4.    public object Clone()
  5.    {
  6.         Class1 clone= new Class1();
  7.         // La ligne ci-dessous est fausse
  8.         clone.flag = this.flag;
  9.        
  10.         return clone;
  11.    }
  12. }


 
Dans le code ci-dessus, c'est le membre flag que je voudrais voir "synchronisé" entre clones...


Message édité par BigBulle le 09-02-2006 à 11:22:31
Reply

Marsh Posté le 09-02-2006 à 11:22:56    

franchement , je sais pas , dsl

Reply

Marsh Posté le 09-02-2006 à 13:09:57    

Bon ben voici une solution que j'ai trouvé pour ce cas particulié:
 

Code :
  1. public class Class1()
  2. {
  3.    private bool flag = false;
  4.    private ArrayList clones;
  5.    private bool Flag{
  6.       get{ return value;}
  7.       set{
  8.             foreach(Class1 clone in clones)
  9.                   clone.flag = value;
  10.            }
  11.    }
  12.    public Class1()
  13.    {
  14.        clones = new ArrayList();
  15.        clones.Add(this);
  16.    }
  17.    public object Clone()
  18.    {
  19.         Class1 clone= new Class1();
  20.         clone.flag = this.flag;
  21.         clone.clones.Add(this);
  22.         this.clones.Add(clone);
  23.         return clone;
  24.    }
  25. }


 
...ça me paraît quand même un peu énorme...
 
si vous avez d'autres idées ;)


Message édité par BigBulle le 09-02-2006 à 13:10:14
Reply

Marsh Posté le 09-02-2006 à 13:11:13    

partagé entre toutes les instances, ou seulement entre les clones ?

Reply

Marsh Posté le 09-02-2006 à 13:27:16    

Seulement entre les clones.  
Sinon la solution aurait été d'utiliser simplement un membre static ;)

Reply

Marsh Posté le 09-02-2006 à 13:30:04    

ce que j'allais te proposer avant de relire le sujet, d'ailleurs [:joce]

Reply

Sujets relatifs:

Leave a Replay

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