2010-07-29 68 views
11

我在這裏有點困惑。String.Format vs ToString和使用InvariantCulture

我應該使用什麼

Console.WriteLine((val/1085).ToString("N")); 

VS 

Console.WriteLine(String.Format("{0:N}", (val/1085))); 

而且我怎麼適應InvariantCulture的?任何最佳實踐:)?

回答

17

其實我更喜歡第三種形式:

Console.WriteLine("{0:N}", val/1085); 

Console.WriteLine能爲你做的String.Format

Console.WriteLine不允許您提供文化。如果這是你想要的,你仍然需要使用String.Format。如在:

String.Format(CultureInfo.InvariantCulture, "{0:N}", 123456789); 

我不推薦使用這個功能,因爲國際用戶在閱讀時會遇到麻煩。對我來說123,456,789.00看起來很奇怪。

+0

你已經得到了點。 – 2010-07-29 09:29:15

+0

我在哪裏適合InvariantCulture?和像34345435一樣的數字我怎樣才能得到輸出34,345,435 – Joe 2010-07-29 09:33:07

+0

我只想把34345435表示爲34,345,435 – Joe 2010-07-29 09:48:20

1

在日期時間中可以同時使用兩者。我寧願使用並看到第一個解決方案(缺少括號的課程)。

當你有一些字符串與一些參數的差距時,String.Format更有用。那麼這是一個殺手鐗的方法,它非常有助於你組織你的代碼。

1

對於格式+文化,我更喜歡:

.ToString("####0.00",CultureInfo.InvariantCulture) 

.ToString("N",CultureInfo.InvariantCulture)