【问题标题】:Difference between Convert.ToString Method and Object.ToString() with regard to GlobalizationConvert.ToString 方法和 Object.ToString() 在全球化方面的区别
【发布时间】:2023-03-22 23:42:01
【问题描述】:

C#.net 中的 Convert.ToString Method 和 Object.ToString() 除了处理 null 值的方式外,还有什么区别。 从全球化的角度来看,两者之间可能存在一些差异。

【问题讨论】:

    标签: c# .net string globalization


    【解决方案1】:

    是和不是。

    例如,Convert.ToString(int) 方法与 Int32.ToString() 方法相同,as MSDN states in the 'Remarks' section:“此实现与 Int32.ToString() 相同。”但是,@987654325 @ 类还提供了将IFormatProvider 作为第二个参数的覆盖(例如Convert.ToString(int, IFormatProvider)),这可用于调整输出格式,例如通过传递 CultureInfo 实例。

    【讨论】:

    • 当然这仍然只是调用 value.ToString 并直接传递 IFormatProvider 。所以 Convert.ToString 直接在对象上提供与 ToString 相同的支持,除了我在回复中提到的少数情况。
    • 嗯,没错,但 Ananth 要求与 Object.ToString()Int32.ToString() 覆盖)相比有所不同,并且此方法不提供 IFormatProvider 参数。
    • 谢谢你,gehho。对于“Object.ToString()”,我的意思是 Int32、Double 等类型。x.toString() 提供的重载(包括 IFormatProvider)比 convert.ToString() 提供的更多...
    【解决方案2】:

    Convert.ToString 大部分情况下都会在传入的值上调用 ToString。例如只有少数例外

    Convert.ToString(object, IFormatProvider) 检查值是否实现 IConvertable 并委托给它,否则如果值不为空则委托给 value.ToString。

    Convert.ToString(IntXX, Int32) 其中 XX 是 16、32、64。这会进行基本转换。

    所以我认为两者在全球化方面没有任何区别。

    【讨论】:

    • 感谢 Taylor 提供的宝贵信息。但是当我们检查这两个支持的重载数量时,我仍然有疑问。想象一下,双 d = 1000; d.Tostring() 有 4 个重载。即它可以将IformatProvider 和Format String 作为参数。但是当我们来到 Convert.ToString(d,XYZ) 时,我们无法指定格式字符串。只有 IformatProvider 。那这意味着什么??
    • @Ananth,格式字符串不会影响字符串的本地化。例如,d.ToString("F2", new CultureInfo("en-GB")) 将返回字符串 1000.00,而 d.ToString("F2", new CultureInfo("el-GR")) 将返回 1000 ,00(注意“,”作为小数点)。所以在这种情况下,格式字符串没有改变,并且不影响字符串的本地化只有格式。
    猜你喜欢
    • 2012-03-07
    • 2011-02-19
    • 1970-01-01
    • 2011-07-14
    • 2019-04-27
    • 2011-11-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多