Bagikan melalui


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

  • Anonymous
    August 08, 2007
    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; }

  • Anonymous
    August 08, 2007
    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

  • Anonymous
    August 08, 2007
    Je ne suis pas assez rapide... :'( pour une fois que j'avais la réponse !

  • Anonymous
    August 08, 2007
    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

  • Anonymous
    August 08, 2007
    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).

  • Anonymous
    August 08, 2007
    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.

  • Anonymous
    August 09, 2007
    raaa même pas le temps de voir le quizz que la réponse est deja donnée :pppp !!!!!

  • Anonymous
    August 16, 2007
    Combien de méthodes d'instance (non statique) de même nom une classe peut-elle contenir ? (et de même