【问题标题】:culture invariant object ToString()文化不变对象 ToString()
【发布时间】:2011-11-19 10:47:32
【问题描述】:

如何在对象上调用ToString() 并使其使用不变的文化? 在实现IConvertible 的对象上存在ToString() 的重载(如bool、int、float..),但如果有问题的对象不是IConvertible 怎么办?

【问题讨论】:

    标签: .net formatting culture cultureinfo


    【解决方案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 中的唯一语言。
    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多