。ToString()和.ToString(CultureInfo.CurrentCulture)

问题描述 投票:3回答:5

例如,我必须在每个数字中使用.ToString(CultureInfo.CurrentCulture)进行字符串转换。我可以以某种方式覆盖.ToString(),这样我就不会在字符串转换中再收到像区域性这样的消息了吗?

例如,现在我必须更改每一个

myNumValue.Count.ToString();

to

myNumValue.Count.ToString(CultureInfo.CurrentCulture);
c# .net code-analysis tostring
5个回答
6
投票

此规则的要点是对每个格式化和解析操作都进行区域性的[[explicit选择。如果您试图系统地交换实现以“欺骗”规则,那么您将最终无所适从。正如Lonli-Lokli所建议的那样,如果您不喜欢阅读带有区域性参数的ToString调用,则可能要考虑使用扩展方法,但是对于所支持的每种区域性都应该有不同的扩展方法。例如:ToUIString()-> ToString(CultureInfo.CurrentCulture)ToInvariantString()-> ToString(CultureInfo.InvariantCulture)


10
投票
ToString()替换ToString(CultureInfo.CurrentCulture)没有任何意义,因为这正是ToString()已经做的。

如果您没有在代码中放入定义的区域性(可能是通过用户选择),则只需遵循第一种方法。


3
投票
如果您是指来自Code Analysis的消息,则可以禁用特定规则。

2
投票
您可以创建扩展方法ToStringEx并以指定的区域性调用常规方法。

0
投票
您可以编写一个ToStringInvariant和ToStringCurrent扩展方法,每种转换类型都有一个替代:int,double,decimal等。复制粘贴只需几分钟。最终可以用相同的方式处理DateTime。
© www.soinside.com 2019 - 2024. All rights reserved.