【问题标题】:With C# under what circumstances do I need to supply a CultureInfo IFormatProvider when using ToString() on a String or Char?使用 C# 在 String 或 Char 上使用 ToString() 时,在什么情况下需要提供 CultureInfo IFormatProvider?
【发布时间】:2018-05-01 22:07:22
【问题描述】:

在什么情况下使用 C# 在 String 或 Char 上使用 ToString() 时需要提供 CultureInfo IFormatProvider?

我通过数字或日期转换得到它,例如

(-10000.4).ToString(provider: new System.Globalization.CultureInfo("es-ES"));
(-10000.4).ToString(provider: new System.Globalization.CultureInfo("en-US"));

DateTime.Now.ToString(provider: new System.Globalization.CultureInfo("es-ES"));
DateTime.Now.ToString(provider: new System.Globalization.CultureInfo("en-US"));

给予:

-10000,4
-10000.4
01/05/2018 22:49:09
5/1/2018 10:49:09 PM

但是下面的呢:

"Some string".ToString(provider: new System.Globalization.CultureInfo("es-ES"));
"Some string".ToString(provider: new System.Globalization.CultureInfo("en-US"));

我可以使用哪些受文化影响的字符串?

char 也一样。

【问题讨论】:

    标签: c# .net tostring culture


    【解决方案1】:

    在任何情况下,因为它什么都不做。正如String.ToString(IFormatProvider provider) 的MSDN documentation 所述:

    provider 已保留,目前不参与此活动 操作。

    因为这个方法只是简单地返回当前字符串不变,有 不需要直接调用。

    这同样适用于Char.ToString(IFormatProvider provider)。


    String 和 Char 之所以有这个明显没用的方法是 需要实现IConvertible 接口,例如允许从string 到int、int 到string 等的转换。

    【讨论】:

    • 感谢 Adrian,这是 RTFM 的一个案例 :-) 虽然有人想知道为什么要实施它。
    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2014-08-03
    • 2019-01-02
    • 2010-11-04
    • 1970-01-01
    • 2016-12-22
    • 2012-06-02
    相关资源
    最近更新 更多