Как установить currencySymbol в CultureInfo.NumberFormat, доступном только для чтения?
-
11-09-2019 - |
Вопрос
Я пытаюсь отформатировать валюту (швейцарский франк -- de-CH) символом (CHF), который отличается от значения по умолчанию .Сетевая культура (SFr.).Проблема в том, что числовой формат для культуры доступен только для чтения.
Есть ли простой способ решить эту проблему с помощью CultureInfo и NumberFormat?Есть ли какой-нибудь способ, которым я могу переопределить currencySymbol?
Пример:
Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)
Это приведет к ошибке при настройке NumberFormat.CurrencySymbol
потому что NumberFormat
является **ReadOnly**
.
Спасибо!
Решение
Позвонить Clone
на CultureInfo
, который создаст изменяемую версию, затем установит символ валюты.
Вы могли бы быть более конкретными:принесите NumberFormatInfo
и только клонируйте это.Это немного более элегантно, ИМО, если только вам не нужно изменить что-то еще в культуре.
Пример на 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));
}
}