文化不变对象 ToString()
Posted
技术标签:
【中文标题】文化不变对象 ToString()【英文标题】:culture invariant object ToString() 【发布时间】:2011-11-19 10:47:32 【问题描述】:如何在对象上调用ToString()
并使其使用不变的文化?
在实现IConvertible
的对象上存在ToString()
的重载(如bool、int、float..),但如果有问题的对象不是IConvertible
怎么办?
【问题讨论】:
【参考方案1】:System.Convert
类有一个静态的ToString
重载,它采用object
。
Convert.ToString(obj, CultureInfo.InvariantCulture);
基于my benchmarks,这大约是string.Format(CultureInfo.InvariantCulture, "0", value)
的两倍,更重要的是,它看起来更干净。但是,如果您已经在构建字符串,我建议您使用 FormattableString.Invariant。
FormattableString.Invariant($"Object value: obj")
【讨论】:
“看起来更干净”如果您从字符串插值开始,并且要转义多个项目,则不会。使用string.Format
,它可以一次性完成所有操作。
@jeromej:这是一个很好的观点,但如果您使用字符串插值,我建议您使用FormattableString.Invariant
以提高可读性。我相应地更新了我的答案。【参考方案2】:
我认为IFormattable
是相关接口。它有一个ToString
方法,可以让您指定格式提供程序,它可以是一种文化。
【讨论】:
由于文化是一种格式提供者,您可以将其与String.Format(CultureInfo.InvariantCulture, "0", value)
一起使用
建议使用string
,而不是String
。
@nitzel:C# 不是 .NET Framework 中的唯一语言。以上是关于文化不变对象 ToString()的主要内容,如果未能解决你的问题,请参考以下文章
为啥 C# decimal ToString 不请求文化和货币?