.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() and .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最终可以用同样的方式处理。