[C#] Quelle est la la différence entre Clone et MemberwiseClone ?
Petite question pour le clonage d'objet pour moi qui vient du monde Java.
Je ne saisis pas bien la différence entre Clone() et MemberwiseClone() en C#. Toutes les 2 sont des shallow copie comme le clone() de Java.
J'imagine donc qu'en C#, il faut refédinir la méthode Clone() dans les classes que l'on veut cloner, tout comme en Java.
Quelqu'un pourrait confirmer ?
Ensuite, je me suis toujours demandé pourquoi ni en Java, ni en .NET il n'y a de méthodes permettant de deep copy alors que ce serait parfaitement réalisable (exemple, on peut faire du clonage par serialisation).
Merci pour vos réponses.
Re: [C#] clonage d'objets
Citation:
Envoyé par vandamme
Je ne saisis pas bien la différence entre Clone() et MemberwiseClone() en C#.
MemberwiseClone est dispo pour tous les objets, mais en protected et non-virtuelle. shallow-copy-only.
Clone doit être implémentée 'à la main', en parallèle d'ICloneable, shallow ou en deep selon l'envie.
Citation:
Envoyé par vandamme
Ensuite, je me suis toujours demandé pourquoi ni en Java, ni en .NET il n'y a de méthodes permettant de deep copy alors que ce serait parfaitement réalisable
La version que j'avais eue je ne sais plus où était simplement que pour faire ce genre de clonage automatiquement, il faudrait passer par la réflexion. Donc pas rapide du tout. Donc c'est laissé entre les mains des développeurs qui peuvent l'implémenter quand ils veulent, de manière bien plus efficace vu qu'ils savent quoi cloner et comment :)