Salut,
je suis en train de me former à C# et il y un truc que je n'arrive pas à comprendre.
J'ai bien capté la différence entre les types valeur et les types référence (pile / tas). J'ai compris que objet1 = objet2 ne faisait que de la copie de référence et que la modification des données (stockées sur le tas) de l'une des références impacte l'autre.
Concernant la copie d'objet, j'ai compris que MemberwiseClone faisait une copie superficielle des données (copie bit à bit des types valeur uniquement)...
Voici dans le bouquin que je bosse la définition de l'intérêt de ICloneable:Clone :
Quel est dans ce cas l'intérêt de redéfinir Clone de ICloneable, alors que j'aurais pu créer une méthode personnelle (sans interfacer ICloneable) comme celle qui suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Pers : ICloneable { public string prenom; public int age; public Pers conjoint; public object Clone() { Pers p = (Pers)MemberwiseClone(); if (conjoint != null) p.conjoint = (Pers)conjoint.Clone(); return p; } }
Merci de votre aide à ma compréhension !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Pers { public string prenom; public int age; public Pers conjoint; public object monCloneAMoi() { Pers p = (Pers)MemberwiseClone(); if (conjoint != null) p.conjoint = (Pers)conjoint.monCloneAMoi(); return p; } }
Partager