Welcome to MSDN Blogs Sign in | Join | Help

News


  • Locations of visitors to this page
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

Posted: Wednesday, August 08, 2007 11:33 PM by mitsu
Filed under: ,

Comments

cyrilCS said:

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;

}

# August 8, 2007 7:07 PM

mitsu said:

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

# August 9, 2007 1:27 AM

Boris Schapira said:

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

# August 9, 2007 1:36 AM

Simon said:

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

# August 9, 2007 3:13 AM

Yaume said:

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).

# August 9, 2007 3:17 AM

Matthieu MEZIL said:

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.

# August 9, 2007 4:40 AM

romagny13 said:

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

# August 9, 2007 7:05 PM

Mitsuru FURUTA - Microsoft FRANCE said:

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

# August 16, 2007 11:41 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker