Es scheitert für mich. Bist du zufällig in einer Kultur, in der "." ist das Tausendertrennzeichen und "," ist der Dezimalpunkt? Decimal.Parse
(und ähnliche Aufrufe) verwenden standardmäßig die aktuelle Kultur des Threads. Ob das eine gute Sache ist oder nicht, ist fraglich, aber irrelevant für das tatsächliche Verhalten:)
Geben Sie CultureInfo.InvariantCulture
im Aufruf decimal.Parse
an:
Ich glaube, das wird sich so verhalten, wie Sie es erwartet haben.
Ich würde mir vorstellen, dass es daran liegt, dass der Parser sich nicht wirklich um Gruppenseparatoren kümmert - sie sind irrelevant für die Umwandlung einer Zeichenfolge in eine Dezimalzahl.
Wir nennen sie Tausendertrennzeichen, aber das sind sie wirklich nicht. Sie sind Gruppenseparatoren - Sie könnten alle 3 Ziffern, alle 10 Ziffern, jede 1 Ziffer teilen, also warum nicht alle 0 Ziffern?
Interessanterweise hat sich der Code für .NET 4 geändert - das ist die relevante Ausgabe von Reflector für mich:
%Vor%