【问题标题】:Should I care about culture, when my app will not emigrate?当我的应用程序不会迁移时,我应该关心文化吗?
【发布时间】:2026-01-03 12:15:02
【问题描述】:

ReSharper 想要改变这一点:

platypusID = DuckbillValues[i - 1].ToString();

..到这个:

platypusID = DuckbillValues[i - 1].ToString(CultureInfo.InvariantCulture);

由于我的应用程序仅在美国使用的可能性很大,我会默认以下哪一项:

1) Smart
2) Dumb
3) Neither smart nor dumb
4) Smart, but not for that reason
5) Dumb, but not for that reason

【问题讨论】:

  • 你已经知道答案了。如果你正在寻找一点同伴压力来推动你编写更好的代码,这里有一个: 1. 另一方面,如果你希望我们支持你的懒惰倾向,也许其他人会答应。
  • 是的,你应该,现在可能不对。经验表明,一旦您决定不处理此类问题,重要人物就不会使用美国文化。
  • 你怎么能确定它只会被使用美国语言环境的人在美国使用?至少,成本应该可以忽略不计,以至于准备将副本运送到日本、墨西哥或加拿大,或者由美国的某个人认为最舒适的语言环境是一个胜利。
  • 您使用的工具将为您做出改变。为什么不希望它帮助您编写更好的代码?
  • @ClayShannon 如果您希望列出的最后一个 ID 是有效的,则需要更改代码...如果没有明确的格式,您将不会得到前导零。

标签: c# winforms resharper cultureinfo


【解决方案1】:

因为我的应用很有可能只在美国使用。

即使您的应用仅在美国使用,如果您的目标受众群体众多,用户也有可能自定义他们的区域设置或使用不同的区域进行系统设置。

无论您是用户做什么,使用InvariantCulture 都是安全的。鉴于这是设置“id”,我个人很可能会将文化强制设置为InvariantCulture,以保证以后不会得到奇怪的结果。

这也使得将来支持其他地区变得更加容易......您永远不知道您的代码以后会发生什么,无论是在此应用程序中还是在其他应用程序中。

另外 - 由于您使用的是 ReSharper,它已经警告您这一点。你已经在那里了。实际上,遵守良好的编码标准比忽略警告更容易,这使得很难想出不指定文化的理由。

【讨论】:

    最近更新 更多