Int32.TryParse () retourne zéro à l'échec - succès ou échec?
j'ai lu ceci de msdn à propos de Int32.TryParse()
quand cette méthode retourne, contient le Équivalent d'une valeur entière signée 32 bits au nombre contenu dans s, si la la conversion a réussi, ou zéro si le la conversion a échoué.
mais que se passe-t-il si la chaîne passée elle-même est une représentation de chaîne de '0'. Si le TryParse
renvoie zéro. Comment savoir si c'est un succès ou un échec?
5 réponses
Non, TryParse
retourne vrai ou faux pour indiquer le succès. La valeur de l' est utilisé pour la valeur parsée, ou 0 en cas d'échec. Donc:
int value;
if (Int32.TryParse(someText, out value))
{
// Parse successful. value can be any integer
}
else
{
// Parse failed. value will be 0.
}
Donc si vous passez en "0", il exécutera le premier bloc, alors que si vous passez dans le "mauvais numéro", il exécutera le deuxième bloc.
la méthode renvoie un booléen indiquant le succès ou l'échec. L'utiliser. L'entier est une référence paramètre passé à la méthode, et n'a rien à voir avec la valeur de retour de la méthode.
Voici le prototype de Int32.TryParse()
documentation. Il est très clair qu'il retourne est un booléen. Le deuxième paramètre est un out int
ce qui signifie que l'argument est passé par référence, donc il sera muté par le méthode.
public static bool TryParse(
string s,
out int result
)
alors pour vérifier le succès ou l'échec, faites ceci:
int value;
if (Int32.TryParse("0", out value))
Console.WriteLine("Parsed as " + value);
else
Console.WriteLine("Could not parse");
Int32.TryParse()
la méthode renvoie un boolean
valeur comme retour et fournit la valeur convertie comme paramètre out. Ainsi, vous pouvez vérifier pour le retour boolean
valeur pour l'état.
private static void TryToParse(string value)
{
int number;
bool result = Int32.TryParse(value, out number);
if (result)
{
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
if (value == null) value = "";
Console.WriteLine("Attempted conversion of '{0}' failed.", value);
}
}
TryParse () renvoie un booléen.
Int32 testInt;
if (!Int32.TryParse("123", out testInt))
{
MessageBox.Show("Is not a Int32!");
return; // abbrechen
}
MessageBox.Show("The parst Int32-value is " + testInt);
en utilisant C# 7 Maintenant vous pouvez déclarer la variable dans le TryParse comme ...
if (Int32.TryParse(someText, out int value))
{
// Parse successful. value can be any integer
}
else
{
// Parse failed. value will be 0.
}