【问题标题】:IFormatProvider with Integer value具有整数值的 IFormatProvider
【发布时间】:2011-02-09 13:01:34
【问题描述】:

我的对象中有一个整数值。我需要将其转换为整数值。所以我这样做了。 System.Convert.ToInt64(对象) 但是 FxCop 说我需要提供 IFormatProvider。字符串数据类型我对提供 IFormatProvider 没有任何问题。如何为整数值提供 IFormatProvider?

【问题讨论】:

  • 我觉得这里不需要IFormatProvider,可以直接转换。

标签: c# iformatprovider


【解决方案1】:

这取决于您需要如何打印您的值。

例如使用:

var provider = System.Globalization.CultureInfo.InvariantCulture;

您将获得一个独立于本地(区域)设置的字符串。

使用:

var provider = System.Globalization.CultureInfo.CurrentCulture;

或:

var provider = System.Globalization.CultureInfo.CurrentUICulture;

相反,字符串将使用您的本地(区域)机器设置打印。

【讨论】:

    【解决方案2】:

    如果你想使用当前文化

    System.Globalization.CultureInfo.CurrentCulture.NumberFormat
    

    或例如:

    new CultureInfo("en-UK").NumberFormat
    

    【讨论】:

    • 生成错误:new CultureInfo("en-UK").NumberFormat 'new CultureInfo("en-UK")' threw an exception of type 'System.ArgumentException' System.Globalization.NumberFormatInfo.... 应该是这样的:new CultureInfo("en-GB").NumberFormatnew CultureInfo("en-US").NumberFormat
    【解决方案3】:

    请看这里:IFormatProvider Interface

    【讨论】:

      【解决方案4】:

      只转换对象变量有问题吗?

      Int64 i = (Int64) myObject;
      

      如果它真的只是一个装箱的整数,我不明白为什么它不起作用。

      【讨论】:

        猜你喜欢
        • 2012-07-06
        • 2016-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        相关资源
        最近更新 更多