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

C# Discussion :

[C# 2.0] Comment appeler différents constructeurs ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut [C# 2.0] Comment appeler différents constructeurs ?
    Bonjour,

    J'ai un problème dans la partie initialisation de mes constructeurs dérivés:

    je voudrais appeler différents constructeurs dans la phase d'initialisation, comme on pouvait le faire en C++

    Voici l'en-tête de 2 construteurs surchargés d'une classe dérivée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public C_mdp_verif(string a_string_value,string a_string_value_verif)
            : base(a_string_value)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public C_mdp_verif(string a_string_value,string a_string_value_verif, bool a_obligatoire)
            : base(a_string_value, a_obligatoire)
    le problème étant que ces deux surcharges ont du code commun a exécuter, qui se trouve dans un constructeur de la classe C_mdp_verif dont voici l'en-tête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private C_mdp_verif(string a_string_value_verif)
    je voudrais appeler le constructeur ci-dessus dans la phase d'initialisation des deux premiers constructeurs enoncé, après l'appel au constructeur de la classe de base.

    En fait, il me faudrait un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public C_mdp_verif(string a_string_value,string a_string_value_verif)
            : base(a_string_value),this(a_string_value_verif)
    j'arrive à appeler this() ou base() dans la phase d'initialisation, mais pas les deux à la suite. J'ose espérer qu'on peut apeler plusieurs constructeurs dans la phase d'initialisation, et que je fais juste une erreur de syntaxe...
    Le truc c'est que je n'ai rien trouvé pour m'aider, et mes bouquins de C# sont un peu bidon

    Au pire je fais une méthode privé que j'apelle dans le corps des constructeurs, mais c'est pas terrible.

    Si quelqu'un pouvais m'éclairer je serais
    Merci!

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut gdkenny,

    Citation Envoyé par gdkenny
    J'ose espérer qu'on peut apeler plusieurs constructeurs dans la phase d'initialisation, et que je fais juste une erreur de syntaxe...
    triste de t'annoncer que ce n'est pas possible. une methode externe n'est pas mal comme solution.

  3. #3
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    CQFD

    Merci de ta réponse

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    au lieu de :base() il faut utiliser :this()

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut
    amha, en ajoutant un niveau à l'héritage ...

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
        class Base
        {
     
            public Base()
            {
     
            }
     
            public Base(int i)
            {
     
            }
     
            public Base(string texte)
            {
                MessageBox.Show(texte);
            }
        }
     
     
        class B : Base
        {
     
            public B(int i)
            {
     
            }
     
            public B(string texte)
                : base(texte)
            {
                MessageBox.Show(texte);
            }
        }
     
        class B1 : B
        {
     
            public B1(string texte, int i)
                : base(texte)
            {
                MessageBox.Show(texte + " " + i.ToString());
            }
     
        }

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

Discussions similaires

  1. Héritage: comment appeler le constructeur parent ?
    Par scheme dans le forum Langage
    Réponses: 22
    Dernier message: 24/02/2011, 17h55
  2. Réponses: 1
    Dernier message: 12/04/2007, 11h50
  3. Réponses: 2
    Dernier message: 25/08/2006, 21h53
  4. Réponses: 2
    Dernier message: 03/06/2006, 12h25

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