Parse vs TryParse

Le développeur a souvent besoin de convertir un type vers un autre. Généralement, il s’agit de convertir une chaine de caractères vers un entier, un double, une date…Le C# propose les méthodes statiques Parse et TryParse. Elles servent à convertir une chaine de caractère vers un autre type mais fonctionnent différemment. Quelles sont leurs différences ?

Parse

Dans la suite de l’article, nous utiliserons int.Parse(), mais on pourrait également se servir de double.Parse, DateTime.Parse

Supposons que nous voulons convertir la chaine "12" en entier. Voici comment on procéderait.

// exemple d'utilisation normale
string str = "12";
int val = int.Parse(str);

A la fin de l’exécution, l’entier val contient la valeur 12.

Lorsqu’on appelle la méthode int.Parse() sur une chaîne qui ne représente pas un nombre, une exception est levée. Par exemple int.Parse("douze") va lever l’exception FormatException.

int.Parse lève une exception dans les cas suivants:

  • la chaîne de caractère passée en paramètre est null (ArgumentNullException)
  • la chaîne de caractère passée en paramètre n’est pas un entier, par exemple "onze" (FormatException)
  • la chaîne de caractère passée en paramètre dépasse les limites du type, par exemple "999999999999999999999999999" (OverflowException)

TryParse

La méthode TryParse retourne un booléen. True si la conversion s’est correctement effectuée, false sinon.

            string str = "douze";
            int val;

            if (int.TryParse(str, out val))
            {
                Console.WriteLine("conversion ok val = " + val);
            }
            else Console.WriteLine("conversion nok val = " + val);

            string str2 = "12";
            int val2;

            if (int.TryParse(str2, out val2))
            {
                Console.WriteLine("conversion ok val = " + val2);
            }
            else Console.WriteLine("conversion nok val = " + val2);

Personnellement, j’utilise presque toujours TryParse, ça évite de lever inutilement des exceptions. Pour effectuer des conversions, on peut également utiliser les méthodes Convert.ToInt32(string). En interne, elles utilisent la méthode Parse.

Auteur : Daniel MINKO FASSINOU

Laisser un commentaire




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.