2011-12-02 14 views
2

這是乏味寫如何改變通過Object.ToString使用的文化?

string msg = "Result is " + r.ToString(CultureInfo.InvariantCulture) + " with " 
    + p.toString(CultureInfo.InvariantCulture) + "% probability."; 

我寧願

string msg = "Result is " + r + " with " + p + "% probability."; 

如何設置InvariantCulture爲我的整個項目的默認?

我的目標是生產程序員可讀的輸出。

回答

5

您需要將當前線程和UI線程的文化設置它:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; 
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; 
-1

您的例子顯示顯示文本的格式,所以你應該相信的ToString()普通版本來格式化你的對象是適當的當前的文化。因此,根本不要指定文化。別擔心,這就是它的本意!

InvariantCulture應將其構建是爲了控制邏輯字符串,而不是顯示字符串被保留的情況。例如見this MSDN page這證實了這一點。

如果出於某些不明確的原因,您確實不希望顯示字符串發生任何變化,那麼您可以指定一種文化,任何文化(例如Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");),但不能指定InvariantCulture