Exercice - Examiner la méthode TryParse()
- 12 minutes
Quand vous utilisez des données, vous êtes parfois amené à convertir des données de chaîne en type de données numérique. Comme vous l’avez appris dans l’unité précédente, le type de données chaîne peut contenir une valeur non numérique, et la conversion de string en type de données numérique entraîne une erreur d’exécution.
Par exemple, le code suivant :
string name = "Bob";
Console.WriteLine(int.Parse(name));
Lève l’exception suivante :
System.FormatException: 'Input string was not in a correct format.'
Pour éviter une exception de format, utilisez la méthode TryParse() sur le type de données cible.
Utiliser TryParse()
La méthode TryParse() effectue plusieurs opérations simultanément :
- Elle tente d’analyser une chaîne dans le type de données numérique donné.
- Si elle réussit, elle stocke la valeur convertie dans un paramètre out, expliquée dans la section suivante.
- Elle retourne une valeur
boolpour indiquer si l’action a réussi ou non.
Vous pouvez utiliser la valeur booléenne de retour pour agir sur la valeur (par exemple, pour effectuer un calcul) ou afficher un message si l’opération d’analyse a échoué.
Notes
Dans cet exercice, vous allez utiliser le type de données int, mais une méthode TryParse() similaire est disponible sur tous les types de données numériques.
Paramètres de sortie
Les méthodes peuvent retourner une valeur ou retourner « void », ce qui signifie qu’elles ne retournent aucune valeur. Les méthodes peuvent également retourner des valeurs via les paramètres out, qui sont définis de la même manière qu’un paramètre d’entrée, mais avec le mot clé out.
TryParse() pour convertir une chaîne en entier
Supprimez ou utilisez l’opérateur de commentaire de ligne
//pour commenter tout le code des étapes précédentes.Mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }Examinez cette ligne de code :
if (int.TryParse(value, out result))Quand vous appelez une méthode avec un paramètre
out, vous devez utiliser le mot cléoutavant la variable, qui contient la valeur. Le paramètreoutest affecté à la variableresultdans le code(int.TryParse(value,out result). Vous pouvez ensuite utiliser la valeur contenue dans le paramètreoutdans le reste de votre code à l’aide de la variableresult.La méthode
int.TryParse()retournetruesi elle a réussi à convertir la variablestringvalueenint; sinon, elle retournefalse. Donc, nous plaçons l’instruction dans une instructionifet nous exécutons ensuite la logique de décision appropriée.La valeur convertie est stockée dans la variable
intresult. Laintvariableresultest déclarée et initialisée avant cette ligne de code. Elle doit donc être accessible à la fois à l’intérieur des blocs de code qui appartiennent aux instructions etifauxelseinstructions, ainsi qu’en dehors de celles-ci.Le mot clé
outindique au compilateur que la méthodeTryParse()ne retourne pas une valeur uniquement de façon standard (sous forme de valeur de retour), mais qu’elle communique aussi une sortie par le biais de ce paramètre bidirectionnel.Quand vous exécutez le code, vous devez voir la sortie suivante :
Measurement: 102
Utiliser la variable int analysée ultérieurement dans le code
Pour démontrer que la variable
resultdéclarée précédemment est renseignée par le paramètreoutet peut également être utilisée ultérieurement dans votre code, mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } Console.WriteLine($"Measurement (w/ offset): {50 + result}");Dans le menu Fichier Visual Studio Code, sélectionnez Enregistrer. Vous devez enregistrer le fichier Program.cs avant de générer ou d’exécuter le code.
Dans le panneau EXPLORATEUR, pour ouvrir un terminal à l’emplacement de votre dossier TestProject, cliquez avec le bouton droit sur TestProject, puis sélectionnez Ouvrir dans le terminal intégré. Un panneau Terminal doit s’ouvrir et doit inclure une invite de commandes indiquant que le Terminal est ouvert à l’emplacement de votre dossier TestProject.
À l’invite de commandes terminal, pour exécuter votre code, tapez dotnet run , puis appuyez sur Entrée.
Notes
Si vous voyez un message indiquant « Impossible de trouver un projet à exécuter », vérifiez que l’invite de commandes Terminal affiche l’emplacement attendu du dossier TestProject. Par exemple :
C:\Users\someuser\Desktop\csharpprojects\TestProject>Vous devez normalement voir la sortie suivante.
Measurement: 102 Measurement (w/ offset): 152Examinez la dernière ligne de code dans l’exemple précédent,
Console.WriteLine($"Measurement (w/ offset): {50 + result}");. Étant donné que la variableresultest définie en dehors de l’instruction if, elle est accessible plus loin dans votre code.
Changer la variable de chaîne en valeur ne pouvant pas être analysée
Pour terminer, examinez l’autre scénario, dans lequel TryParse() reçoit intentionnellement une valeur incorrecte qui ne peut pas être convertie en int.
Modifiez la première ligne de code, réinitialisez la variable
valueavec une autre valeur.string value = "bad";Modifiez également la dernière ligne de code pour vous assurer que le résultat est supérieur à 0 avant d’afficher le deuxième message.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");L’exemple de code complet doit maintenant correspondre au code suivant :
string value = "bad"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code. Vous devez obtenir le résultat suivant :
Unable to report the measurement.Examinez les deux dernières lignes de code ajoutées dans l’exemple précédent.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Étant donné que
resultest défini en dehors de l’instructionif,resultest accessible ultérieurement dans votre code en dehors des blocs de code. Vous pouvez donc vérifier si la valeur deresultest supérieure à zéro avant d’autoriser l’écriture deresult+ décalage en sortie. Le fait de vérifier si la valeur deresultest supérieure à zéro évite d’afficher une valeur de décalage après le messageUnable to report the measurement..
Récapitulatif
La méthode TryParse() est un outil précieux. Voici quelques idées rapides à retenir.
- Utilisez
TryParse()pour convertir une chaîne en type de données numérique. -
TryParse()retournetruesi la conversion a réussi,falseen cas d’échec. - Les paramètres out offrent un autre moyen de retourner une valeur. Dans cet exemple, le paramètre
outrenvoie la valeur convertie. - Utilisez le mot clé
outquand vous passez un argument à une méthode qui a défini un paramètreout.
Vérifiez vos connaissances
Commentaires
Cette page a-t-elle été utile ?
No
Vous avez besoin d’aide pour cette rubrique ?
Vous souhaitez essayer d’utiliser Ask Learn pour clarifier ou vous guider dans cette rubrique ?