IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Fonctionnement constructeurs


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut [C#] Fonctionnement constructeurs
    Bonjour,
    J'ai un objet A par ex et un objet B

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A a=new A();
    a=ObjetBexistant
     
    je modifie ObjetBExistant pas la suite
    Est ce que mon objet A pointe toujours vers l'adresse mémoire de objetBexistant ou non ?
    Sinon, comment faire pour créé en gros un objet pointant tjs vers une adresse mémoire fixe.
    Merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    tu fais une copie simplement

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Oui mais j'aimerai faire une copie par référence. Comment est ce possible ?

  4. #4
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut Re: [C#] Fonctionnement constructeurs
    Citation Envoyé par gilles641
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A a=new A();
    a=ObjetBexistant
    le new n'a aucun intérêt ici, c'est une perte de temps et de mémoire. Si le type A est un type par référence, a=ObjectBexistant revient à faire pointer a vers l'instance de l'objet b.
    Avec un type par valeur ce sont deux copies que tu obtiendrais, ce qui est le contraire.

    Donc, bien entendu, puisque a et b pointe le même objet, tout ce qui est fait par a ou par b est vu de façon identique par a et par b, c'est le même objet.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Mais si on utilise effectivement pas de new

    Donc si on a :
    A a;
    B b=new B();

    a=b
    alors la moindre modif de b entraine une modif de A ?

    Si on veut définir un constructeur par copie, est ce faisable ?

  6. #6
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    Citation Envoyé par gilles641
    Mais si on utilise effectivement pas de new
    Donc si on a :
    A a;
    B b=new B();
    a=b
    alors la moindre modif de b entraine une modif de A ?
    Si on veut définir un constructeur par copie, est ce faisable ?
    Dans le code ci-dessus, oui, les deux variables a et b pointe le même objet, ils sont des "alias" en quelques sorte. Que tu écrives a.truc = 2; ou b.truc = 2; c'est en fait la même chose.

    Enfin une remarque : dans ton code tu parles de a instance de la classe A et b de la classe B... faire a = b n'est absolument pas valide, sauf si bien entendu la classe B descend de A ou que A et B descendent d'une même classe mère. Dans les autres cas ton code est non valide.

    si ce que tu veux faire, de ce que je comprends, c'est initialiser a à partir de b, mais qu'ensuite il y ait bien deux instances totalement différentes, alors il faut que les classes A et B sachent gérer la copie. Une méthode Copy existe ou non, si non, il faut la créer...
    Reste la solution de la deep copy en passant par la sérialisation. Tu serialise l'objet b, tu le relis dans l'objet a. A partir de ce moment a et b sont identiques mais sont bien deux instances distinctes qui pourront évoluer chacune de leur côté.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Je te remercie pour ta réponse :-)
    Je vais faire quelques tests !
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 09/01/2011, 23h33
  2. Faire fonctionner le constructeur d'une classe
    Par Marc22 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2010, 00h53
  3. Réponses: 8
    Dernier message: 14/01/2010, 18h14
  4. constructeur surchargée qui ne fonctionne pas
    Par kate59 dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 13/06/2008, 22h30
  5. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo