![](/img/trans.png)
[英].ToString() and .ToString(CultureInfo.CurrentCulture)
[英]ToString(CultureInfo.CurrentCulture) Is this needed?
我正在使用Api,並且所有字符串都具有?.ToString(CultureInfo.CurrentCulture)
這是做什么的,需要這樣做嗎? 其他數據類型(例如int或小數)又如何呢?
一些文化用不同的方式寫數字(尤其是小數)。 對於大多數歐洲語言,小數點寫為逗號,數字分隔符寫為點,例如:
整數不一定需要它。 如果使用數字分隔符進行格式化,則會更加混亂:
更新:如注釋中所指出,ToString()將默認為當前區域性。 這是一個問題,因為對於開發人員而言,看起來像在開發人員機器上預期的那樣工作的外觀將有所不同,並且可能會失敗,實際上,您尚未明確說明您的意圖。 這就是RS#抱怨的原因。
Resharper之類的工具建議明確指定文化的原因在於:
數據結構到文本的臨時轉換在很大程度上取決於當前的區域性,當在與本地開發人員不同語言環境的機器上執行代碼時,可能會導致意想不到的結果。 為避免歧義,ReSharper會警告您代碼中可能出現此類問題的任何實例。
如您所寫,因此您應對其行為負責。
而且,在我看來,默認設置已經不夠好了。 它假定人類將閱讀格式化的文本,並且使用希望在我們的進程/線程開始時設置的文化,或者如果沒有使用環境默認語言,則該文化是希望的。 Windows提供了很多設置來自定義顯示thin的方式,以及何時將應用程序比桌面更有意義的應用程序,它比現在更有意義-只需使用用戶想要的任何內容,他都會對此感到滿意。
如果您正在從事API項目,並且在這些調用中到處都可以看到CurrentCulture
,並且文本沒有直接顯示給用戶,則編寫該文本的人很可能不理解-他只是解決了錯誤/警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.