J’adore résoudre des casse-têtes en C#; je pense que c’est un excellent moyen d’approfondir sa connaissance du langage. Et en plus, c’est amusant !
Je viens de penser à celui-ci :
static void Test(out int x, out int y) { x = 42; y = 123; Console.WriteLine (x == y); }
Que pensez-vous que ce code affiche ? Pouvez-vous en être sûr ? Postez votre réponse dans les commentaires !
J’essaierai de poster plus de casse-têtes à l’avenir, si j’en trouve d’autres.
Le résultat de la comparaison. Donc dans ce cas il affiche “False”.
habituellement oui, mais pas forcément… sinon ce ne serait pas vraiment un casse-tête 😉
Oui c’est vrai que c’était trop simple 🙂
Vu que ce sont des paramètres out (fonctionne comme des paramètres ref) ils peuvent très bien être modifié ailleurs (multithread ?) et donc retourner True ?
Effectivement ça peut retourner true, mais il n’y a pas besoin de multithread pour ça. Indice: ça se joue au niveau de l’appel à la méthode…
Test(out x, out x);
ou
Test(out y, out y);
… Utiliser la même variable pour les 2 paramètres…
C’est ça 😉
J’espère qu’il y aura d’autres Casse têtes. C’était vraiment bien.
Super.
J’ai du mettre le débogueur pour comprendre que les deux variables avec la même adresse.
.. Si j’ai bien compris ?!
Ça mériterait une petite explication (ou un petit dessin) pour les béotiens.
Oui c’est bien ça 😉
Il faudrait que je mette à jour le billet avec la solution…