40 Stimmen

Unterschied zwischen Convert.ToDecimal(string) & Decimal.Parse(string)

Was ist der Unterschied in C# zwischen Convert.ToDecimal(string) y Decimal.Parse(string) ?

In welchen Fällen würden Sie das eine dem anderen vorziehen?

Welchen Einfluss hat sie auf die Leistung?

Welche anderen Faktoren sollte ich bei der Wahl zwischen den beiden Angeboten in Betracht ziehen?

60voto

James Newton-King Punkte 46367

Es gibt einen wichtigen Unterschied, der zu beachten ist:

Convert.ToDecimal wird zurückgegeben 0 wenn sie eine null String.

decimal.Parse wirft eine ArgumentNullException wenn die Zeichenkette, die geparst werden soll null .

47voto

Guy Starbuck Punkte 21075

Von bytes.de :

Die Klasse Convert dient dazu eine breite Palette von Typen zu konvertieren, so dass Sie mehr Typen nach Decimal konvertieren können als als mit Decimal.Parse, das nur mit nur mit String umgehen kann. Auf der anderen andererseits ermöglicht Decimal.Parse einen NumberStyle angeben.

Decimal und decimal sind Aliasnamen und sind gleich.

Für Convert.ToDecimal(string), Decimal.Parse wird intern aufgerufen.

Morten Wennevik [C# MVP]

Da Decimal.Parse intern von Convert.ToDecimal aufgerufen wird, müssen Sie, wenn Sie extrem Leistungsanforderungen sollten Sie sich an Decimal.Parse halten, da es einen Stack-Frame einspart.

1 Stimmen

Es sei denn, Convert.ToDecimal und/oder Decimal.Parse werden während der Kompilierung oder sogar während JIT eingefügt. D.h., Performance

18voto

David J. Sokol Punkte 3416

Ein Faktor, an den Sie vielleicht noch nicht gedacht haben, ist die Decimal.TryParse Methode. Beide Convert.ToDecimal y Parse lösen Ausnahmen aus, wenn sie die Zeichenkette nicht in das richtige Dezimalformat umwandeln können. Die TryParse-Methode gibt Ihnen ein schönes Muster für die Eingabevalidierung.

decimal result;
if (decimal.TryParse("5.0", out result))
   ; // you have a valid decimal to do as you please, no exception.
else
   ; // uh-oh.  error message time!

Dieses Muster ist unglaublich gut geeignet, um Benutzereingaben auf Fehler zu überprüfen.

3voto

dimarzionist Punkte 18137

Eine allgemeine Anregung zum ursprünglichen Thema - bitte verwenden Sie TryParse() sobald Sie nicht wirklich sicher sind, dass der Eingabe-String-Parameter die korrekte Zahlenformat-Darstellung sein WILL.

1voto

Taran Punkte 2307

Hauptunterschied zwischen Convert.ToDecimal(string) y Decimal.Parse(string) ist, dass Convert Griffe Null während die andere eine Ausnahme auslöst

Hinweis: Eine leere Zeichenkette wird nicht verarbeitet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X