Frage

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 irgendeine Form von Fehlerprüfung wie ein Try-Catch-Block?

War es hilfreich?

Lösung

Parse wirft eine Ausnahme, wenn er den Wert nicht analysieren kann, während TryParse eine bool zurück, der angibt, ob es gelungen ist.

TryParse nicht nur try / catch intern - der ganze Sinn davon ist, dass es ohne Ausnahmen umgesetzt wird, so dass es schnell ist. In der Tat ist die Art und Weise es am wahrscheinlichsten ist, implementiert, dass intern die Parse Methode TryParse aufrufen und dann eine Ausnahme aus, wenn es false zurück.

Auf den Punkt gebracht, verwenden Parse, wenn Sie sicher sind, dass der Wert gültig ist; verwenden TryParse sonst.

Andere Tipps

Wenn die Zeichenfolge nicht in eine ganze Zahl umgewandelt werden, dann

  • int.Parse() eine Ausnahme
  • werfen
  • int.TryParse() wird return false (aber nicht eine Ausnahme)

Die TryParse Methode können Sie testen, ob etwas parseable. Wenn Sie Parse wie in der ersten Instanz mit einem ungültigen int versuchen, erhalten Sie eine Ausnahme während der TryParse bekommen, hat es eine boolean gibt so dass Sie wissen, ob das Parsen erfolgreich war oder nicht.

Als Fußnote, vorbei in null meisten TryParse Methoden wird eine Ausnahme werfen.

TryParse und die Ausnahmesteuer

Parse löst eine Ausnahme aus, wenn die Umwandlung von einer Zeichenfolge mit dem angegebenen Datentyp ausfällt, während TryParse vermeidet ausdrücklich eine Ausnahme zu werfen.

TryParse nicht den Wert zurück, es gibt einen Statuscode, um anzuzeigen, ob das Parsen erfolgreich war (und wirft keine Ausnahme).

Für die Aufzeichnung Ich teste zwei Codes. Das einfach versuchen, aus einer Zeichenfolge in eine Zahl zu konvertieren, und wenn es dann Zahl auf Null zuweisen fehlschlagen

        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 TryParse zu verwenden, da versucht und fängt Alternative, um die Ausnahme ausgelöst

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

Dass es schmerzhaft langsam und nicht wünschenswert ist, jedoch der Code nicht aufhören, es sei denn, Debug die Ausnahme für Anschlag mit ihm abgerechnet.

Ich weiß, es ist eine sehr alte Post, aber Gedanken des Teilens paar mehr Details zu Parse vs TryParse.

hatte ich ein Szenario, in dem Datetime String werden muss umgewandelt und wenn DatWert null oder String.Empty wir eine Ausnahme konfrontiert waren. Um dies zu überwinden, haben wir Parsen mit TryParse ersetzt und werden standardmäßig Datum.

Alt-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);

Haben Sie eine andere Variable und als Out für TryParse verwendet zu erklären.

double.Parse ( "-"); stellt eine Ausnahme dar, während Double.TryParse ( "-", geparst out); parst auf 0 so dass ich denke TryParse tut komplexere Umwandlungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top