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#] Comment optimiser mon constructeur ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    771
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2004
    Messages : 771
    Par défaut [C#] Comment optimiser mon constructeur ?
    Bonjour à tous,

    petite question encore une fois sur les constructeurs en C#.

    Disons que j'ai :

    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
     
    class foo
    {
    	String A;
    	bool B = false;
     
    	public foo(String A)
    	{
    		this.A = A;
    		if (b)
    		{
    			methode1();
    		}
    	}
     
    	public foo(String A; bool B) : this(A)
    	{
    		this.B = B;
    	}
     
    	public void methode1()
    	{
    		// Utilisation de A et B
    		// ......
    	}
    }
    Et là j'ai un problème. Si j'utilise le constructeur new foo("A",true) par exemple, methode1() ne sera jamais lancée.

    Pourquoi? Parce que l'appel de this(A) se fait avant l'affectation de this.B = B

    J'ai bien des solutions au problème, mais j'aimerais savoir lesquelles vous pourriez me conseiller, si quelqu'un a déjà eu le problème.

    Merci d'avance.

    Cdt,

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Par défaut
    Tu fonctionnes "à l'envers".

    Le code à exécuter est factorisé dans le constructeur qui a le plus d'arguments, et non dans celui qui en a le moins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     		public foo(string a, bool b)
    		{
    			this.A = a;
    			this.B = b;			
    			if (this.B)
    			{
    				methode1();
    			}
    		}
     
    		public foo(string a) : this(a, false)
    		{
     
    		}

  3. #3
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    771
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2004
    Messages : 771
    Par défaut
    Citation Envoyé par Wyatan
    Tu fonctionnes "à l'envers".

    Le code à exécuter est factorisé dans le constructeur qui a le plus d'arguments, et non dans celui qui en a le moins.
    Ah merci beaucoup!!! Etant donné que je viens de 8 ans de Java, je n'y avais même pas songé. Je vais aller de ce pas me fouetter avec des ortilles.

    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
     		public foo(string a, bool b)
    		{
    			this.A = a;
    			this.B = b;			
    			if (this.B)
    			{
    				methode1();
    			}
    		}
     
    		// J'ai plutot this.b ici
    		public foo(string a) : this(a, this.b)
    		{
     
    		}
    J'ai fait une petite correction, à mon sens.

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

Discussions similaires

  1. [oracle] Comment optimiser mon select ?
    Par sousou94 dans le forum SQL
    Réponses: 8
    Dernier message: 20/06/2011, 13h09
  2. Comment optimiser mon programme
    Par fouedou77 dans le forum C
    Réponses: 2
    Dernier message: 29/06/2009, 09h51
  3. [Optimisation] Comment optimiser mon architecture ?
    Par buzzkaido dans le forum C++
    Réponses: 6
    Dernier message: 09/05/2007, 13h59
  4. Comment optimiser mon serveur ?
    Par guidav dans le forum Requêtes
    Réponses: 8
    Dernier message: 27/02/2007, 17h47
  5. Réponses: 9
    Dernier message: 07/11/2006, 14h12

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