警告 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
代码分析说有上面的问题,到底有啥问题啊?
string.Format在内部使用CultureInfo对字符串进行处理,如果不指定CultureInfo,会使用当前线程的CultureInfo。因此,在不同的区域设置中,同样的代码可能会产生不同的结果。如DateTime.ToString(IFormatProvider)在不同的区域设置中会产生完全不同形式的结果,string.Format的原理与之相同。
因此,代码分析建议将string.Format替换为带有IFormatProvider参数的重载形式,就是希望在国际化软件中,对于不同的区域设置也能产生相同的结果。当然,如果您的软件肯定不是国际化的,不使用IFormatProvider也无妨。
楼上正解。
最好是使用固定的格式化字符串,这样比较方便统一,呵呵