Was ist der Unterschied zwischen Parse () und TryParse ()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Gibt es eine Form der Fehlerprüfung wie einen Try-Catch-Block?
Parse
Löst eine Ausnahme aus, wenn der Wert nicht analysiert werden kann, während eine TryParse
Rückgabe zurückgegeben wird, die bool
angibt, ob dies erfolgreich war.
TryParse
nicht nur try
/ catch
intern - der springende Punkt ist, dass es ohne Ausnahmen implementiert wird, so dass es schnell ist. Tatsächlich wird es höchstwahrscheinlich so implementiert, dass die Parse
Methode intern TryParse
eine Ausnahme aufruft und dann auslöst, wenn sie zurückkehrt false
.
Kurz gesagt, verwenden Parse
Sie diese Option, wenn Sie sicher sind, dass der Wert gültig ist. andernfalls verwenden TryParse
.
Wenn die Zeichenfolge nicht in eine Ganzzahl konvertiert werden kann, dann
int.Parse()
wird eine Ausnahme auslösenint.TryParse()
wird false zurückgeben (aber keine Ausnahme auslösen)quelle
Mit der TryParse-Methode können Sie testen, ob etwas analysierbar ist. Wenn Sie Parse wie in der ersten Instanz mit einem ungültigen int versuchen, wird eine Ausnahme angezeigt, während in TryParse ein Boolescher Wert zurückgegeben wird, der Sie darüber informiert, ob die Analyse erfolgreich war oder nicht.
Als Fußnote löst die Übergabe von null an die meisten TryParse-Methoden eine Ausnahme aus.
quelle
TryParse und die Ausnahmesteuer
Parse löst eine Ausnahme aus, wenn die Konvertierung von einer Zeichenfolge in den angegebenen Datentyp fehlschlägt, während TryParse das Auslösen einer Ausnahme explizit vermeidet.
quelle
TryParse gibt den Wert nicht zurück, sondern gibt einen Statuscode zurück, der angibt, ob die Analyse erfolgreich war (und keine Ausnahme auslöst).
quelle
Für die Aufzeichnung teste ich zwei Codes: Diese versuchen einfach, von einer Zeichenfolge in eine Zahl umzuwandeln, und wenn dies fehlschlägt, weisen Sie die Zahl Null zu.
und:
Für c # ist die beste Option die Verwendung von tryparse, da die Alternative try & Catch die Ausnahme ausgelöst hat
Dass es schmerzhaft langsam und unerwünscht ist, hört der Code jedoch nicht auf, es sei denn, die Debug-Ausnahme ist damit verbunden, damit aufzuhören.
quelle
Ich weiß, dass es ein sehr alter Beitrag ist, dachte aber daran, ein paar weitere Details zu Parse vs TryParse zu teilen.
Ich hatte ein Szenario, in dem DateTime in String konvertiert werden muss und wenn datevalue null oder string.empty ist, hatten wir eine Ausnahme. Um dies zu überwinden, haben wir Parse durch TryParse ersetzt und erhalten das Standarddatum.
Alter Code:
Neuer Code:
Müssen eine andere Variable deklarieren und als Out für TryParse verwendet werden.
quelle
startDate
und überschreiben sieendDate
wieDateTime.TryParse
immer mitDateTime.MinValue
. Wenn falsche Datumsdarstellungen in einen anderen Wert konvertiert werden sollen, überprüfen Sie den Rückgabewert vonDateTime.TryParse
und setzen Sie den Wert explizit, wenn er falsch ist.DateTime?
( DateTime nullable )double.Parse ("-"); löst eine Ausnahme aus, während double.TryParse ("-", out parsed); wird auf 0 analysiert, also führt TryParse vermutlich komplexere Konvertierungen durch.
quelle
TryParse
zurücktrue
oderfalse
? So wissen Sie, ob es "gültig" war.