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

时间:2012-02-15 13:28:53

标签: c# .net code-analysis tostring

例如,我必须在每个数字中使用.ToString(CultureInfo.CurrentCulture)来进行字符串转换。我可以以某种方式覆盖.ToString(),这样我就不会明确地在字符串转换中获得像文化这样的消息吗?

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

myNumValue.Count.ToString();

myNumValue.Count.ToString(CultureInfo.CurrentCulture);

5 个答案:

答案 0 :(得分:9)

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

如果您没有将定义的文化(可能通过用户选择)放入您的代码中,只需坚持使用第一种方法。

答案 1 :(得分:5)

此规则的要点是为每个格式化和解析操作创建显式文化选择。如果你试图系统地交换实现来“欺骗”规则,那么你最终将彻底解决潜在的问题。正如Lonli-Lokli所建议的那样,如果您不喜欢使用culture参数读取ToString调用,则可能需要考虑使用扩展方法,但是您应该为每个支持的文化使用不同的扩展方法。例如:ToUIString() - > ToString(CultureInfo.CurrentCulture)和ToInvariantString() - >的ToString(CultureInfo.InvariantCulture)

答案 2 :(得分:3)

如果您指的是来自“代码分析”的消息,则可以禁用特定规则。

答案 3 :(得分:2)

您可以创建扩展方法ToStringEx并使用指定的文化调用常用方法。

答案 4 :(得分:0)

您可以编写ToStringInvariant和ToStringCurrent扩展方法,每种类型都有一个覆盖转换:int,double,decimal等。复制和粘贴只需几分钟。 DateTime最终可以用同样的方式处理。