3 回答

TA貢獻1859條經驗 獲得超6個贊
當數字,日期和時間格式化為字符串或從字符串中解析時,將使用區域性來確定其完成方式。例如,在主流en-US
文化中,您具有以下字符串表示形式:
1,000,000.00-一百萬,兩位小數
1/29/2013-發布日期
在我的文化(da-DK
)中,值具有以下字符串表示形式:
1.000.000,00-一百萬,兩位小數
2013年1月29日-發布日期
在Windows操作系統中,用戶甚至可以自定義數字和日期/時間的格式,還可以選擇操作系統以外的其他區域。所使用的格式是用戶的選擇方式,應該是這樣。
所以,當你格式化值使用被顯示給用戶,例如ToString
或String.Format
或使用從字符串解析DateTime.Parse
或Decimal.Parse
默認是使用CultureInfo.CurrentCulture
。這允許用戶控制格式。
但是,許多字符串格式設置和解析實際上不是應用程序和用戶之間交換的字符串,而是應用程序和某些數據格式(例如XML或CSV文件)之間交換的字符串。在那種情況下,您不想使用,CultureInfo.CurrentCulture
因為如果格式化和解析是使用不同的區域性進行的,則它可能會中斷。在這種情況下,您要使用CultureInfo.InvariantCulture
(基于en-US
區域性)。這樣可以確保值可以無問題地往返。
該ReSharper的給你警告的原因是,一些應用程序編寫者不知道這種區別可能導致意想不到的結果,但他們從來沒有發現這一點,因為他們CultureInfo.CurrentCulture
就是en-US
具有相同行為CultureInfo.InvariantCulture
。但是,一旦在另一種區域性中使用了該應用程序,就有機會使用一種區域性進行格式化而另一種區域性用于解析該應用程序。
總結一下:
CultureInfo.CurrentCulture
如果要格式化或解析用戶字符串,請使用(默認)。使用
CultureInfo.InvariantCulture
如果格式化或解析應該由一個軟件是解析的字符串。由于用戶無法控制格式化和解析的方式,因此很少使用特定的國家文化。
- 3 回答
- 0 關注
- 970 瀏覽
添加回答
舉報