.ToString() and .ToString(CultureInfo.CurrentCulture)
本文关键字:ToString CurrentCulture and CultureInfo | 更新日期: 2023-09-27 18:24:47
例如,我必须在每次数字到字符串的转换中使用.ToString(CultureInfo.CurrentCulture)
。我能以某种方式重写.ToString()
吗?这样我就不会在字符串转换中显式地得到更多类似区域性的消息了?
例如,现在我必须更改每个
myNumValue.Count.ToString();
至
myNumValue.Count.ToString(CultureInfo.CurrentCulture);
用ToString(CultureInfo.CurrentCulture)
替换ToString()
没有任何意义,因为这正是ToString()
已经做的。
如果您没有将定义的区域性(可能通过用户选择)放入代码中,只需坚持第一种方法。
此规则的要点是为每个格式化和解析操作显式地选择区域性。如果你试图系统地交换实现来"欺骗"规则,你最终只会掩盖潜在的问题。正如Lonli-Lokli所建议的,如果您不喜欢阅读带有区域性参数的ToString
调用,您可能需要考虑使用扩展方法,但您应该为所支持的每个区域性都有一个不同的扩展方法。例如:ToUIString()
->ToString(CultureInfo.CurrentCulture)
和ToInvariantString()
->ToString(CultureInfo.InvariantCulture)
如果您指的是来自代码分析的消息,那么您可以禁用特定规则。
您可以创建扩展方法ToStringEx,并使用指定的区域性调用常用方法。
您可以编写ToStringInvariant和ToStringCurrent扩展方法,每种类型都有一个重写来转换:int、double、decimal等。复制和粘贴只需几分钟。DateTime最终可以用同样的方式处理。