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 ! MitsuAnonymous
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 :pAnonymous
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