C# .ToString()和.ToString(CultureInfo.CurrentCulture)

C# .ToString()和.ToString(CultureInfo.CurrentCulture),c#,.net,code-analysis,tostring,C#,.net,Code Analysis,Tostring,例如,我必须在每个数字到字符串的转换中使用.ToString(CultureInfo.CurrentCulture)。我是否可以以某种方式重写.ToString(),以便在字符串转换中不再显式获得类似区域性的消息 例如,现在我必须改变每一个习惯 myNumValue.Count.ToString(); 到 如果您指的是来自代码分析的消息,那么您可以禁用特定规则。您可以创建扩展方法ToString,并使用指定的区域性调用常用方法。将ToString()替换为ToString(CultureInf

例如,我必须在每个数字到字符串的转换中使用
.ToString(CultureInfo.CurrentCulture)
。我是否可以以某种方式重写
.ToString()
,以便在字符串转换中不再显式获得类似区域性的消息

例如,现在我必须改变每一个习惯

myNumValue.Count.ToString();


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

您可以创建扩展方法ToString,并使用指定的区域性调用常用方法。

ToString()替换为ToString(CultureInfo.CurrentCulture)没有任何意义,因为这正是ToString()已经有了


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

此规则的要点是为每个格式化和解析操作明确选择区域性。如果您试图系统地交换实现以“欺骗”规则,那么最终只会掩盖潜在的问题。正如Lonli Lokli所建议的,如果您不喜欢用“文化参数”读取“代码> toStase调用,那么您可能需要考虑使用扩展方法,但是对于您支持的每种文化,都应该有一个不同的扩展方法。e、 g.:
ToIstring()
->
ToString(CultureInfo.CurrentCulture)
ToInvariantString()
->
ToString(CultureInfo.InvariantCulture)

您可以编写一个ToString变体和一个ToString当前扩展方法,每个类型有一个要转换的覆盖:int、double、decimal、,复制和粘贴只需几分钟。
DateTime最终也可以用同样的方法处理。

inst default invariantCurrentCulture and not CurrentCulturedFault是CurrentCulture,这就是为什么当人们忽略它时会产生问题。我遇到了一些非常有趣的问题,人们在将自定义文件格式写入磁盘时没有在ToString或string.Format调用中指定区域性。当一位来自印度和日本的新同事加入时,各种各样的问题都发生了。当然,不指定区域性会导致两个用户写出不同格式的数据,其他用户当然无法读取这些数据。随着时间的推移,我学会了永远不要压制这一规则,也不要四处寻找工作。我看到过太多的问题是由不这样做引起的。如果您在生产中使用使用客户端线程区域性格式化或解析“常用”数据的代码,情况会更糟。在许多情况下,您无法从存储的数据中推断出预期的区域性(例如:2001年3月5日是5月3日还是3月5日?),因此一旦发现生产中的本地化错误,您就无法正确清理现有数据。也就是说,我不一定强制使用“原始”的ToString(文化),因为我有时更喜欢使用一种机制来交换文化源。在这种情况下,我通常会添加一个自定义FxCop规则来防止使用ToString。
myNumValue.Count.ToString(CultureInfo.CurrentCulture);