2012-01-28 133 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)); 

您已經提供瞭解決方法:格式在調用點任何你想要的文化。