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 :

utilisation des constructeurs déjà définis dans un nouveau constructeur


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 48
    Points : 53
    Points
    53
    Par défaut utilisation des constructeurs déjà définis dans un nouveau constructeur
    Bonjour,

    j'ai une classe A qui a déjà un constructeur (Note : le constructeur de al classe A c'est Mercedes ahahah)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class A
    {
        public A(double x) {...}
    }
    je voudrais faire un autre constructeur, qui appelle le premier dans un cas.

    Genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public A(double B, bool ok)
    {
        if (ok) { appeler le premier constructeur }
        else { faire autre chose }
    }
    Je sais qu'on peut appeler le constructeur préexistant dans l'entête du nouveau constructeur avec this(double x), mais peut on le faire dans le corps du nouveau constructeur ?

    J'ai essayé de metttre this() mais ca ne marche pas.

    Sinon, peut on mettre d'autres instructions dans l'entête d'un constructeur à part this() et base() (si je pouvais mettre la condition dans l'en tête, ca marcherait aussi).


    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Une ruse de ce genre ?
    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
     
            public A(double b)
            {
                monTraitement(b);
            }
     
            public A(double B, bool ok)
            {
                if(ok)
                {
                    monTraitement(B);
                }
                else
                {
                    monTraitement2(B);
                }
            }
     
            private monTraitement(bool b)
            {
                // TODO
            }
     
            private monTraitement2(bool b)
            {
                // TODO
            }

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    à ma connaissance, la réponse est non

    Maintenant, tu peux mettre le comportement qui est fait dans le constructeur de base dans une methode. Tu appelles cette méthode ensuite comme bon te semble...

    Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public Constructeur()
    { 
       InitClasse();
    }
     
    public Constructeur(bool ok)
    {
       if(ok) {initClasse();}
    }
    En dehors de cela, ou de la clause this() (ou base()) penses pas qu'il y ait d'autres solutions

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 48
    Points : 53
    Points
    53
    Par défaut
    ok merci les gars je voulais simplement être sûr que y ait pas une feinte qui m'échappait.


    Ca me parait bizarre qu'on puisse appeler un truc dans un en tete et pas dans un corps mais bon, le jour où je designerai des langages de programmation, je pourrai me permettre de critiquer

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il me semble qu'on peut faire ça en Java... Vu que C# est en partie inspiré de Java, c'est dommage qu'ils n'aient pas gardé cette possibilité !

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Et si on faisait dans l'autre sens ?
    public Constructeur() : this(true)
    {
    }

    public Constructeur(bool ok)
    {
    if (ok)
    { ...}
    }
    J'apprécie modérément les fonctions d'init appelées dans le constructeur, parce que par exemple les variables readonly ne peuvent être affectées que dans les constructeurs. et readonly, c'est bien
    ಠ_ಠ

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2007, 00h07
  2. Réponses: 8
    Dernier message: 07/05/2006, 18h35
  3. Réponses: 12
    Dernier message: 11/04/2006, 17h00
  4. PB d'utilisation des formulaires de données dans EXCEL
    Par adil155 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/11/2005, 16h09
  5. [C#] Comment utiliser des dll win 32 dans un projet .NET
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 31/05/2005, 13h45

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