Verwendung von NumberFormatInfo zum Entfernen von Klammern für negative Werte

Wir verwenden derzeit Folgendes, um US-Dollar-Werte in unserer Webanwendung zu erstellen:

string.Format("{0:C0}", dollarValue );

In diesem Beispiel sehen wir, wenn dollarValue 145 ist: $ 145. Wenn es -145 ist, sehen wir (145 $) anstatt - 145 $. Beachten Sie, dass dollarValue für uns ein Double ist, es kann sich jedoch auch um einen beliebigen Zahlentyp handeln. Meiner Ansicht nach.

Wie auch immer, ich möchte, dass es entweder 145 $ oder - 145 $ ist.

Nach meinen Recherchen ist dies jetzt möglicherweise mit der NumberFormatInfo-Klasse möglich. Ich kann nicht herausfinden, wie man es benutzt, und ich kann kein gültiges Beispiel finden. Ich habe diese Frage hier gesehen:Erstellen einer benutzerdefinierten NumberFormatInfo in C #, um "Free" anzuzeigen, wenn ein Währungswert 0,00 USD beträgt Aber das Beispiel von MSDN, das mit dieser Frage verknüpft ist, scheint ein bisschen anders zu sein als das, was ich wirklich tun möchte.

Mir ist klar, dass ich Folgendes tun muss:

double dollarValue = -145d;
string myMoney = dollarValue.ToString( "C0", someIFormatProvider );

Wobei someIFormatProvider wahrscheinlich vom Typ NumberFormatInfo ist. Nun, was ich getan habe, ist Folgendes:

NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString( "C0", ni );

... und ich erhalte die Ausnahme "Instanz ist schreibgeschützt". Während die "Dokumentation" für die CurrencyNegativePattern-Eigenschaft besagt, dass Sie den Wert festlegen und abrufen können, ist dies anscheinend nicht möglich. Außerdem ist NumberFormatInfo eine versiegelte Klasse. Ich kann nicht einfach eine neue Klasse daraus erstellen und den Wert überschreiben.

Ich bin ratlos, wie ich damit umgehen soll. Im Moment besteht meine Problemumgehung darin, einfach meinen negativen Wert zu negieren und ein positives Ergebnis zu erzielen, das ich machestring.Format(...) nochmal. Ja, mir ist klar, dass davor kein negatives Vorzeichen steht, aber das lässt sich natürlich leicht beheben, indem Sie bei Bedarf ein "-" vor dem Ergebnis einfügen.

Kann mir jemand ein funktionierendes Beispiel geben, wie die NumbefFormatInfo-Klasse in dieser Situation effektiv verwendet werden kann? Vielen Dank.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage