将对象转换为具有指定区域性的字符串

时间:2018-04-24 16:57:38

标签: c# .net

有没有更好的方法将Object类型的变量转换为具有指定文化的字符串(与Thread的默认文化不同),而不是使用如下的丑陋方式:1)尝试将对象转换为所有支持ToString(CultureInfo)重载的类型或2)临时设置线程的默认文化?

3 个答案:

答案 0 :(得分:2)

您只需将其强制转换为IConvertible界面:

object o = ...;
string s = ((IConvertible)o).ToString(cultureInfo);

答案 1 :(得分:1)

我认为最好的方法是使用Convert.ToString(obj,cultureInfo)。它使引擎盖下的所有铸件。

public static string ToString(Object value, IFormatProvider provider) {
    IConvertible ic = value as IConvertible;
    if (ic != null) 
        return ic.ToString(provider);
    IFormattable formattable = value as IFormattable;
    if (formattable != null) 
        return formattable.ToString(null, provider);
    return value == null? String.Empty: value.ToString();
}

来源: https://referencesource.microsoft.com/#mscorlib/system/convert.cs,6a1a2c3ac58e60dd

答案 2 :(得分:0)

string.Format(culture, "{0}", obj);