Quelle est la différence entre Parse () et TryParse ()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Existe-t-il une forme de vérification des erreurs comme un bloc Try-Catch?
Parse
lève une exception s'il ne peut pas analyser la valeur, alors que TryParse
retourne un bool
indiquant s'il a réussi.
TryParse
ne fonctionne pas seulement try
/ en catch
interne - tout l'intérêt de celui-ci est qu'il est implémenté sans exceptions afin qu'il soit rapide. En fait, la manière la plus probable de l'implémenter est que la Parse
méthode appellera en interne TryParse
puis lèvera une exception si elle retourne false
.
En un mot, utilisez Parse
si vous êtes sûr que la valeur sera valide; sinon utilisez TryParse
.
Si la chaîne ne peut pas être convertie en entier, alors
int.Parse()
lancera une exceptionint.TryParse()
retournera false (mais ne lèvera pas d'exception)la source
La méthode TryParse vous permet de tester si quelque chose est analysable. Si vous essayez Parse comme dans la première instance avec un int invalide, vous obtiendrez une exception pendant que dans TryParse, il retourne un booléen vous indiquant si l'analyse a réussi ou non.
En note de bas de page, la transmission de null à la plupart des méthodes TryParse lèvera une exception.
la source
TryParse et la taxe d'exception
Parse lève une exception si la conversion d'une chaîne vers le type de données spécifié échoue, alors que TryParse évite explicitement de lever une exception.
la source
TryParse ne renvoie pas la valeur, il renvoie un code d'état pour indiquer si l'analyse a réussi (et ne lève pas d'exception).
la source
Pour mémoire, je teste deux codes: qui essaient simplement de convertir une chaîne en un nombre et en cas d'échec, attribuez un numéro à zéro.
et:
Pour c #, la meilleure option est d'utiliser tryparse car l'alternative try & Catch a levé l'exception
Qu'il soit douloureux, lent et indésirable, cependant, le code ne s'arrête pas à moins que l'exception de Debug ne soit réglée pour s'arrêter avec lui.
la source
Je sais que c'est un très vieux post, mais j'ai pensé à partager quelques détails supplémentaires sur Parse vs TryParse.
J'ai eu un scénario dans lequel DateTime doit être convertie en String et si datevalue null ou string.empty nous étions confrontés à une exception. Afin de surmonter cela, nous avons remplacé Parse par TryParse et obtiendrons la date par défaut.
Ancien code:
Nouveau code:
Vous devez déclarer une autre variable et l'utiliser comme Out pour TryParse.
la source
startDate
etendDate
commeDateTime.TryParse
cela les écrasera toujours avecDateTime.MinValue
. Si des représentations de date incorrectes doivent être converties en une valeur différente, vérifiez la valeur de retour deDateTime.TryParse
et si elle est fausse, définissez la valeur explicitement.DateTime?
( DateTime nullable )double.Parse ("-"); lève une exception, tandis que double.TryParse ("-", out parsed); analyse à 0 donc je suppose que TryParse effectue des conversions plus complexes.
la source
TryParse
revient-iltrue
oufalse
? C'est ainsi que vous saurez s'il était "valide".