Clonage d'objet.

LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009 - 26 oct. 2005 à 13:59
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 13 mars 2008 à 11:17
Salut à tous,

J'ai un petit soucis. Je ne comprends pas comment on peut faire pour
copier un objet par valeur et non par référence. Je sais qu'il faut
utiliser l'interface IClonable et la méthode Clone() quelque part, mais j'y arrive pas !

Donc si y en a d'entre vous qui veulent bien m'expliquer, ce serait
sympa. Par contre, va falloir être clair et précis, parce que je crois
que c'est pas gagné ...

Merci !

LocalStone

9 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
26 oct. 2005 à 14:10
normalement, il suffit de faire :

monObjet = (TypeObject)oldObjet.Clone();

mais faut que la classe TypeObject implémente l'interface IClonable

Sébastien FERRAND
[MVP C#]
0
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
26 oct. 2005 à 14:17
Euh ... Comment on fait pour implémenter une interface ?
Hé hé hé ...

LocalStone
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
26 oct. 2005 à 14:25
exemple :

public class Personne : IClonable {

private string nom;
private string prenom;

public string Nom {
get {return nom;}
set {nom = value;}
}

public string Prenom {
get {return prenom;}
set {prenom = value;}
}

public object Clone() {
Personne pers = new Personne();
pers.Nom = this.nom;
pers.Prenom = this.prenom;
retrun pers;
}

}

Sébastien FERRAND
[MVP C#]
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
26 oct. 2005 à 14:32
Ou utiliser MemberwiseClone() tout dépend du contexte.

::|The S@ib|::
MVP C#.NET
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
26 oct. 2005 à 16:11
Ok. Merci. Je vais essayer ça.

Mais y a quelque chose que je comprends pas. En fait, je suis en train
de coder un type Matrix, dont les méthodes servent à calculer la trace,
le determinant et j'en passe et des meilleurs. Bon, je vous l'accorde,
c'est un peu bateau, mais c'est pour apprendre. Bref. Et du coup, j'ai
lu qu'il valait mieux utiliser le mot clef struct, plutôt que le mot
clef class, justement parce que le passage par valeur se fait tout
seul. Mais ça marche pas ...

J'ai rien compris ou bien ?

LocalStone
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 oct. 2005 à 13:17
J'utilise toujours IClonable mais là je viens de comprendre que si j'ai besoin juste d'une copie superficielle ( shalow copy ) il suffit d'utiliser MemberwiseClone( ), je savais pas

ca s'utilise comme ça ?

public class Chat
{
private string name;
private int age;


public Chat( string name, int age )
{
this.name = name;
this.age = age;
}


public Chat Clone( )
{
return ( Chat )this.MemberwiseClone( );
}
}
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 oct. 2005 à 14:04
mouaip... après, c'est question d'habitude...

combien d'entres vous utilise l'interface IComparable pour comparer des objets...

Sébastien FERRAND
[MVP C#]
0
nadiabelhadj Messages postés 2 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 21 avril 2008
13 mars 2008 à 11:09
pleaze j'ai bezoin de clonage de processus en c++ builder
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 mars 2008 à 11:17
hum... arriver sur un thread qui a 2 ans et demi... supplier quelque chose qui n'a rien à voir... et en plus dans la mauvaise technologie... tu fais fort !

Va voir sur le site : http://www.cppfrance.com

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Rejoignez-nous