it-swarm.com.de

Parse v. TryParse

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 Art Fehlerprüfung wie einen Try-Catch-Block?

97
Kredns

Parse löst eine Ausnahme aus, wenn der Wert nicht analysiert werden kann, während TryParse eine bool zurückgibt, die angibt, ob der Wert erfolgreich war.

TryParse ist nicht nur try/catch intern - der springende Punkt ist, dass sie ausnahmslos implementiert wird, damit sie schnell ist. In der Tat ist die Implementierung am wahrscheinlichsten, dass intern die Parse-Methode TryParse aufruft und dann eine Ausnahme auslöst, wenn sie false zurückgibt.

Kurz gesagt, verwenden Sie Parse, wenn Sie sicher sind, dass der Wert gültig ist. Verwenden Sie andernfalls TryParse.

138
Greg Beech

Wenn der String nicht in eine Ganzzahl konvertiert werden kann, dann

  • int.Parse() löst eine Ausnahme aus
  • int.TryParse() gibt false zurück (löst jedoch keine Ausnahme aus)
20
M4N

Mit der TryParse-Methode können Sie testen, ob etwas analysiert werden kann. Wenn Sie Parse als erste Instanz mit einem ungültigen int versuchen, wird in TryParse eine Ausnahme angezeigt. In diesem Fall wird ein boolescher Wert zurückgegeben, der Sie darüber informiert, ob die Analyse erfolgreich war.

Wenn Sie den meisten TryParse-Methoden den Wert null übergeben, wird eine Ausnahme ausgelöst.

3
Ray Booysen

TryParse und die Ausnahmesteuer

Parse löst eine Ausnahme aus, wenn die Konvertierung von einem String in den angegebenen Datentyp fehlschlägt, während TryParse das Auslösen einer Ausnahme ausdrücklich verhindert.

3
Gulzar Nazim

Für das Protokoll teste ich zwei Codes: Versuchen Sie einfach, von einem String in eine Zahl umzuwandeln, und wenn es fehlschlägt, weisen Sie die Zahl auf Null zu.

        if (!Int32.TryParse(txt,out tmpint)) {
            tmpint = 0;
        }

und:

        try {
            tmpint = Convert.ToInt32(txt);
        } catch (Exception) {
            tmpint = 0;
        }

Für c # ist die beste Option die Verwendung von Tryparse, da die try & Catch-Alternative die Ausnahme ausgelöst hat

A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

Dass es schmerzhaft langsam und unerwünscht ist, hört der Code jedoch nicht auf, es sei denn, die Ausnahme von Debug wird damit beendet.

0
magallanes

TryParse gibt den Wert nicht zurück, sondern gibt einen Statuscode zurück, um anzuzeigen, ob die Analyse erfolgreich war (und keine Ausnahme auslöst).

0

Ich weiß, es ist ein sehr alter Beitrag, aber ich dachte daran, ein paar Details über 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, standen wir vor einer Ausnahme. Um dies zu überwinden, haben wir Parse durch TryParse ersetzt und erhalten das Standarddatum.

Alter Code:

dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");

Neuer Code:

DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);

Muß eine andere Variable deklarieren und als Out für TryParse verwenden. 

0
LifeOfPi