2012-01-28 69 views
0
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol = "$"; 
decimal value = 500; 
Trace.TraceInformation("{0:C}", value); 
Trace.TraceInformation(string.Format("{0:C}", value)); 

产生以下输出:System.Diagnostics.Trace忽略文化设置

Information: 0 : ¤500.00 
Information: 0 : 500,00$ 

这意味着它要么执行在不同的线程格式化或忽略Thread.CurrentThread.CurrentCulture(可能与一个不变的替换它)。为什么?? MSDN keeps silence

回答

1

正确,Trace输出明确使用CultureInfo.InvariantCulture。为TraceListener.TraceEvent反编译源具有这样说:

this.WriteLine(string.Format(CultureInfo.InvariantCulture, format, args)); 

您已经提供了解决方法:格式在调用点任何你想要的文化。