为了账号安全,请及时绑定邮箱和手机立即绑定

string.Format的问题

string.Format的问题

拉丁的传说 2018-11-02 06:03:20
警告    73    CA1305 : Microsoft.Globalization : 由于 'string.Format(string, params object[])' 的行为可能因当前用户的区域设置不同而不同,请将 'ComEditBarCom.Page_Load(object, EventArgs)' 中的此调用替换为对 'string.Format(IFormatProvider, string, params object[])' 的调用。如果要向用户显示 'string.Format(IFormatProvider, string, params object[])' 的结果,请将“CultureInfo.CurrentCulture”指定为“IFormatProvider”参数;另外,如果软件将存储和访问此结果(例如,要将它保留到磁盘或数据库中),则指定“CultureInfo.InvariantCulture”。    E:\work\TomCMS\TomCMS.Web\Components\EditBar\ComEditBarCom.ascx.cs    18    TomCms.Web代码分析说有上面的问题,到底有啥问题啊?
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

string.Format在内部使用CultureInfo对字符串进行处理,如果不指定CultureInfo,会使用当前线程的CultureInfo。因此,在不同的区域设置中,同样的代码可能会产生不同的结果。如DateTime.ToString(IFormatProvider)在不同的区域设置中会产生完全不同形式的结果,string.Format的原理与之相同。

因此,代码分析建议将string.Format替换为带有IFormatProvider参数的重载形式,就是希望在国际化软件中,对于不同的区域设置也能产生相同的结果。当然,如果您的软件肯定不是国际化的,不使用IFormatProvider也无妨。


查看完整回答
反对 回复 2018-11-05
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

最好是使用固定的格式化字符串,这样比较方便统一,呵呵

查看完整回答
反对 回复 2018-11-05
  • 2 回答
  • 0 关注
  • 784 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信