如何更改Object.ToString使用的文化?

时间:2011-12-02 13:32:09

标签: .net string-formatting globalization tostring

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

我更喜欢

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

如何在整个项目中将InvariantCulture设置为默认值?

我的目标是生成程序员可读输出。

2 个答案:

答案 0 :(得分:5)

您需要将当前线程和ui线程文化设置为它:

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

答案 1 :(得分:-1)

您的示例显示了显示文本的格式,因此您应该信任ToString()的纯文本格式,以根据当前文化格式设置对象的格式。因此,根本不要指定文化。别担心,这就是它的意思!

InvariantCulture应该保留用于构造用于控制逻辑而不是显示字符串的字符串的情况。例如,参见this MSDN page确认这一点。

如果由于某些不明原因您确实不希望显示字符串发生任何变化,那么您可以指定文化,任何文化(例如Thread.CurrentThread.CurrentCulture = new CultureInfo( "en-US");),但不能InvariantCulture