我一直在想这件事很长一段时间,但我似乎无法找到明确的答案。每当我转换为整数使用ToString()
方法的字符串,我运行代码分析,我得到以下警告:使用Int32.ToString()没有格式和IFormatProvider。为什么我会收到CA1305警告?
CA1305:Microsoft.Globalization:因为“)int.ToString(下称” 行为可能 会根据当前用户的 区域设置设置而异,请将'Class.Method()'中的此调用替换为调用 'int.ToString(IFormatProvider)'。 如果'int.ToString( IFormatProvider)'的结果将显示为 该用户,则指定 'CultureInfo.CurrentCulture'作为 'IFormatProvider'参数。 否则,如果结果将是 存储和软件访问,如 ,当它被持久化到磁盘或 数据库,指定 'CultureInfo.InvariantCulture'。
这是非常著名的通用CA1305警告,每当你做出有一个接受IFormatProvider
参数的重载方法的调用它获取所示。虽然这在几乎所有情况下都是非常正确的警告,但我无法想象任何在调用默认值ToString()
时没有任何格式或格式提供者的整数。所以,如果有人知道任何可能出错的东西,请赐教。我猜测IFormatProvider
过载肯定是有原因的。
顺便说一下,我做总是使用IFormatProvider
超载拨打电话,因为它似乎也有一个性能的好处。如果有人对此有任何有见地的评论,请随时分享。
很明显的例子,谢谢。我不知道每种文化都有不同的负面迹象。 – 2011-04-04 08:49:18