亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CultureInfo.InvariantCulture是什么意思?

CultureInfo.InvariantCulture是什么意思?

慕姐4208626 2019-11-08 14:34:59
我有一串這樣的文字:var foo = "FooBar";我想聲明第二個字符串,bar并使它等于我的第一個字符串的第一個和第四個字符foo,所以我這樣做是這樣的:var bar = foo[0].ToString() + foo[3].ToString();這可以按預期工作,但是ReSharper建議我將其放在Culture.InvariantCulture括號內,因此此行的結尾如下:var bar = foo[0].ToString(CultureInfo.InvariantCulture)        + foo[3].ToString(CultureInfo.InvariantCulture);這是什么意思,它將影響我的程序的運行方式嗎?
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

當數字,日期和時間格式化為字符串或從字符串中解析時,將使用區域性來確定其完成方式。例如,在主流en-US文化中,您具有以下字符串表示形式:

  • 1,000,000.00-一百萬,兩位小數

  • 1/29/2013-發布日期

在我的文化(da-DK)中,值具有以下字符串表示形式:

  • 1.000.000,00-一百萬,兩位小數

  • 2013年1月29日-發布日期

在Windows操作系統中,用戶甚至可以自定義數字和日期/時間的格式,還可以選擇操作系統以外的其他區域。所使用的格式是用戶的選擇方式,應該是這樣。

所以,當你格式化值使用被顯示給用戶,例如ToStringString.Format或使用從字符串解析DateTime.ParseDecimal.Parse默認是使用CultureInfo.CurrentCulture。這允許用戶控制格式。

但是,許多字符串格式設置和解析實際上不是應用程序和用戶之間交換的字符串,而是應用程序和某些數據格式(例如XML或CSV文件)之間交換的字符串。在那種情況下,您不想使用,CultureInfo.CurrentCulture因為如果格式化和解析是使用不同的區域性進行的,則它可能會中斷。在這種情況下,您要使用CultureInfo.InvariantCulture(基于en-US區域性)。這樣可以確保值可以無問題地往返。

該ReSharper的給你警告的原因是,一些應用程序編寫者不知道這種區別可能導致意想不到的結果,但他們從來沒有發現這一點,因為他們CultureInfo.CurrentCulture就是en-US具有相同行為CultureInfo.InvariantCulture。但是,一旦在另一種區域性中使用了該應用程序,就有機會使用一種區域性進行格式化而另一種區域性用于解析該應用程序。

總結一下:

  • CultureInfo.CurrentCulture如果要格式化或解析用戶字符串,請使用(默認)。

  • 使用CultureInfo.InvariantCulture如果格式化或解析應該由一個軟件是解析的字符串。

  • 由于用戶無法控制格式化和解析的方式,因此很少使用特定的國家文化。


查看完整回答
反對 回復 2019-11-08
  • 3 回答
  • 0 關注
  • 970 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號