Comment : déterminer si une chaîne représente une valeur numérique (Guide de programmation C#)
Pour déterminer si une chaîne est une représentation valide d'un type numérique spécifié, utilisez la méthode TryParse statique implémentée par tous les types numériques primitifs, ainsi que par les types tels que DateTime et IPAddress. L'exemple suivant indique comment déterminer si « 108 » est un intvalide.
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
Si la chaîne contient des caractères non numériques ou que la valeur numérique est trop grande ou trop petite pour le type particulier que vous avez spécifié, TryParse retourne la valeur false et affecte la valeur zéro au paramètre de sortie. Sinon, il retourne la valeur true et définit le paramètre de sortie à la valeur numérique de la chaîne.
Notes
Une chaîne peut contenir des caractères numériques uniquement et n'être toujours pas valide pour le type de la méthode TryParse que vous utilisez.Par exemple, « 256 » n'est pas une valeur valide pour byte mais est valide pour int. "98.6 » n'est pas une valeur valide pour int, mais est valide pour decimal.
Exemple
Les exemples suivants indiquent comment utiliser TryParse avec les représentations sous forme de chaîne des valeurs long, byte et decimal.
string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine("number1 now = {0}", number1);
else
Console.WriteLine("numString is not a valid long");
byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine("number2 now = {0}", number2);
else
Console.WriteLine("numString is not a valid byte");
decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine("number3 now = {0}", number3);
else
Console.WriteLine("number3 is not a valid decimal");
Programmation fiable
Les types numériques primitifs implémentent également la méthode statique Parse, qui lève une exception si la chaîne ne correspond pas à un nombre valide. La méthode TryParse est généralement plus efficace car elle retourne simplement la valeur false si le nombre n'est pas valide.
Sécurité
Utilisez toujours les méthodes TryParse ou Parse pour valider l'entrée d'utilisateur de contrôles comme les zones de texte et les zones de liste déroulante.
Voir aussi
Tâches
Comment : convertir un tableau de byte en int (Guide de programmation C#)
Comment : convertir une chaîne en nombre (Guide de programmation C#)
Concepts
Analyse de chaînes numériques dans .NET Framework