簡體   English   中英

ToString(CultureInfo.CurrentCulture)這需要嗎?

[英]ToString(CultureInfo.CurrentCulture) Is this needed?

我正在使用Api,並且所有字符串都具有?.ToString(CultureInfo.CurrentCulture)

這是做什么的,需要這樣做嗎? 其他數據類型(例如int或小數)又如何呢?

一些文化用不同的方式寫數字(尤其是小數)。 對於大多數歐洲語言,小數點寫為逗號,數字分隔符寫為點,例如:

  • 英語100000.34
  • 斯洛伐克語100000,34

整數不一定需要它。 如果使用數字分隔符進行格式化,則會更加混亂:

  • 英語100,000.34
  • 斯洛伐克語100.000,34

更新:如注釋中所指出,ToString()將默認為當前區域性。 這是一個問題,因為對於開發人員而言,看起來像在開發人員機器上預期的那樣工作的外觀將有所不同,並且可能會失敗,實際上,您尚未明確說明您的意圖。 這就是RS#抱怨的原因。

Resharper之類的工具建議明確指定文化的原因在於:

數據結構到文本的臨時轉換在很大程度上取決於當前的區域性,當在與本地開發人員不同語言環境的機器上執行代碼時,可能會導致意想不到的結果。 為避免歧義,ReSharper會警告您代碼中可能出現此類問題的任何實例。

如您所寫,因此您應對其行為負責。

而且,在我看來,默認設置已經不夠好了。 它假定人類將閱讀格式化的文本,並且使用希望在我們的進程/線程開始時設置的文化,或者如果沒有使用環境默認語言,則該文化是希望的。 Windows提供了很多設置來自定義顯示thin的方式,以及何時將應用程序比桌面更有意義的應用程序,它比現在更有意義-只需使用用戶想要的任何內容,他都會對此感到滿意。

如果您正在從事API項目,並且在這些調用中到處都可以看到CurrentCulture ,並且文本沒有直接顯示給用戶,則編寫該文本的人很可能不理解-他只是解決了錯誤/警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM