例如,我必须在每个数字中使用.ToString(CultureInfo.CurrentCulture)
来进行字符串转换。我可以以某种方式覆盖.ToString()
,这样我就不会明确地在字符串转换中获得像文化这样的消息吗?
例如,现在我必须更改每个
myNumValue.Count.ToString();
到
myNumValue.Count.ToString(CultureInfo.CurrentCulture);
答案 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最终可以用同样的方式处理。