Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol = "$";
decimal value = 500;
Trace.TraceInformation("{0:C}", value);
Trace.TraceInformation(string.Format("{0:C}", value));
产生以下输出:
Information: 0 : ¤500.00
Information: 0 : 500,00$
这意味着它要么在不同的线程上执行格式化,要么忽略Thread.CurrentThread.CurrentCulture
(可能用不变的线程替换它)。为什么?? MSDN keeps silence
答案 0 :(得分:1)
正确,Trace
输出显式使用CultureInfo.InvariantCulture
。 TraceListener.TraceEvent
的反编译源代码就是这样:
this.WriteLine(string.Format(CultureInfo.InvariantCulture, format, args));
您已经提供了一种解决方法:针对您在呼叫站点所需的任何文化格式。