Bonjour
Je définis deux classes comme ceci :
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
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; } }
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
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;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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part p2.E = e;
Merci d'avance
Partager