MagicBuzz a écrit :
en effet, d'autant que ça peut avoir des effets trompeurs.
En effet, l'objet de retour n'est pas forcément celui qu'à la première lecture on attend.
Ici, un exemple en C#, parfaitement reproduisible en C++
Code :
MessageBox.Show(int.TryParse("12", out NullVar).ToString().Substring(0, 1));
|
A la première lecture, on converti "12" en entier, avant de le reconvertir en string, avant de récupérer son premier caractère : on doit afficher "1". (ok, c'est débile, mais c'est un exemple )
Et non, ça fait pas ça du tout...
int.TryParse() stock dans la variable "NullVar" le résultat de la conversion si elle est réussie, et ça retourne un objet de type "bool" de la valeur "True" ou "False" selon si c'est réussi ou non.
Résultat, ici on affiche "T".
L'exemple est bidon, mais ça montre que cela peut être source de confusion.
En passant par un objet intermédiaire, on aura tendance à plus rapidement remettre en question la comportement de TryParse, et vérifier son type de sortie.
|