如何在Readonly CultureInfo.NumberFormat上设置CurrencySymbol?

时间:2009-06-04 16:37:35

标签: .net cultureinfo number-formatting

我正在尝试使用与默认.Net文化(SFr。)不同的符号(CHF)来格式化货币(Swiss Frank - de-CH)。问题是文化的NumberFormat是ReadOnly。

有没有一种简单的方法可以使用CultureInfo和NumberFormat来解决这个问题?有什么办法可以覆盖CurrencySymbol吗?

示例:

Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)

设置NumberFormat.CurrencySymbol时会出错,因为NumberFormat**ReadOnly**

谢谢!

1 个答案:

答案 0 :(得分:13)

Clone上调用CultureInfo,这将创建一个可变版本,然后设置货币符号。

您可能更具体:获取NumberFormatInfo并仅克隆它。除非你需要改变文化中的任何其他内容,否则IMO会稍微优雅一些​​。

C#中的示例:

using System;

using System.Globalization;

class Test
{
    static void Main()
    {
        CultureInfo original = CultureInfo.GetCultureInfo(2055);
        NumberFormatInfo mutableNfi = (NumberFormatInfo) original.NumberFormat.Clone();
        mutableNfi.CurrencySymbol = "X";
        Console.WriteLine(50.ToString("C", mutableNfi));
    }
}