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

sug*_*rum 9 .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)
Run Code Online (Sandbox Code Playgroud)

设置NumberFormat.CurrencySymbol因为这NumberFormat是错误**ReadOnly**.

谢谢!

Jon*_*eet 13

打电话CloneCultureInfo,这将创建一个可变的版本,然后设置的货币符号.

您可能更具体:获取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));
    }
}
Run Code Online (Sandbox Code Playgroud)