Bonjour

Je définis deux classes comme ceci :
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
26
27
28
29
30
31
32
    public class Populace
    {
        public Populace()
        {
            E = new enfants();
        }
        public enfants E { get; set; }
        private int ageMajorite;
 
        public int AgeMajorite
        {
            get { return ageMajorite; }
            set
            {
                ageMajorite = value;
                if (E.Age < ageMajorite)
                    E.majeur = false;
                else
                    E.majeur = true;
            }
        }
    }
 
    public class enfants
    {
        public enfants(){}
        public enfants(int age) { }
 
        public int Age { get; set; }
        public bool majeur { get; set; }
 
    }
Dans mon programme, je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
  Populace p1 = new Populace();
            Populace p2 = new Populace();
            enfants e = new enfants(19);
            e.majeur = true;
 
            p1.E = e;
            p2.E = e;
 
            p1.AgeMajorite = 18;
            p2.AgeMajorite = 21;
Je m'apercois que la valeur de e.majeur est modifiée, alors que j'aurais voulu que seule celle de p2.E.majeur le soit. En clair, je pensais que lorseque je fais e était passé par valeur, or il semblerait qu'il soit passé par référence. Comment fait-on pour faire un passage d'objet par valeur ?

Merci d'avance