Geek Quizz V: révision sur les constructeurs


 


Celui-ci est plus simple que les autres, donc attention: question de rapidité !


Dans l’exemple suivant, comment écrire le constructeur de B pour qu’il appelle son constructeur hérité de A en lui passant le même paramètre dummy ? Pour ne pas que ça soit trop facile je rajoute la condition suivante, si dummy passé dans le constructeur de B est négatif, je veux appeler le constructeur de A avec dummy = 0 sinon avec la valeur de dummy.


public class A
{
public A(int dummy)
{
this.dummy = dummy;
}

private int dummy;
}
public class B : A
{
public B(int dummy)
{
?
}
}


Mitsu


[Update] Quizz suivant: Geek Quizz VI: jouons avec les portées

Comments (8)

  1. cyrilCS says:

    effectivement c’est simple 🙂

    public B(int dummy) : base(dummy>0?dummy:0)

    {

    }

    si la condition est un peu plus compliqué ou alors qu’on a besoin de faire un traitement entre l’appel du constructeur de B et l’appel du constructeur de A on peut passer par une méthode static

    public B(int dummy) : base(dummyMethod(dummy)){

    }

    private static int dummyMethod(int dummy){

       if (dummy > 0)  

                 return dummy;

       else

                 return 0;

    }

  2. mitsu says:

    Toute ma considération pour Cyril (toujours rien d’autre à gagner :p).

    En effet on ne pense pas toujours à utiliser la structure conditionnelle "bool?trueValue:falseValue" qui dans ce cas nous simplifie grandement l’écriture.

    Même si la question était simple, je suis sûr que l’astuce sera utile à un grand nombre et bravo encore à Cyril qui ne démérite pas !

    Mitsu

  3. Je ne suis pas assez rapide… :'( pour une fois que j’avais la réponse !

  4. Simon says:

    Regardez les dates du Post et de la réponse, il a triché : il a répondu 4H30 avant que la question soit posée :p

  5. Yaume says:

    Pareil.

    J’aimerais précisé qu’effectivement l’opérateur ternaire, bien que peu populaire peu dans beaucoup de cas rendre un code plus lisible. En effet beaucoup de personne trouve sa lecture peu aisé et qu’il alourdit les lignes de code. Cependant dans un cas de type :

    int a;

    if(condition)

    a=1;

    else

    a=2;

    c’est l’afffectation qui est importante et non le ‘if’. l’écriture :

    int a=(condition?1:2);

    permet au premier coup d’oeil a voir que l’on et en train d’affecter une valeur à a. Alors que dans le cas du if, il faut lire la structure complète (à l’exception de la condition).

  6. Argggggggggggggggggg encore trop tard.

    Par contre franchement celui-là, il était vraiment trop simple. Il aurait été plus rigolo de passer un string avec "" à la place de null pour voir si les réponses auraient été ? ou ??.

    Même si c’est pas surprenant, les quizz de Mitsu engendrent plus d’enthousiame que les miens…  (http://blog.developpez.com/index.php?blog=121&title=a_mon_tour_de_lancer_un_quizz&more=1&c=1&tb=1&pb=1). Merci à Simon qui a fait l’effort de répondre.

  7. raaa même pas le temps de voir le quizz que la réponse est deja donnée :pppp !!!!!

  8. Combien de méthodes d’instance (non statique) de même nom une classe peut-elle contenir ? (et de même