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

C# 将对象转换为具有指定区域性的字符串,c#,.net,C#,.net,有没有更好的方法将对象类型的变量转换为具有指定区域性(与线程的默认区域性不同)的字符串,而不是使用像1)尝试将对象强制转换为所有支持ToString(CultureInfo)的类型这样丑陋的方法重载或2)临时设置线程的默认区域性?您只需将其强制转换到IConvertible界面: object o = ...; string s = ((IConvertible)o).ToString(cultureInfo); 您只需将其强制转换到IConvertible界面: object o = ...

有没有更好的方法将对象类型的变量转换为具有指定区域性(与线程的默认区域性不同)的字符串,而不是使用像1)尝试将对象强制转换为所有支持
ToString(CultureInfo)的类型这样丑陋的方法
重载或2)临时设置线程的默认区域性?

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

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

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

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

我认为最好的方法是使用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();
}
资料来源:
我认为最好的方法是使用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();
}
资料来源:

你不知道物体从哪里来?你不知道物体从哪里来?这是一个很好的方法;不幸的是,它不适用于某些类型,例如异常。
Exception
没有这样的重载;不幸的是,它不适用于某些类型,例如异常。
Exception
没有这样的重载。这并不能回答这个问题。一旦你有足够的钱,你将能够;相反@我可以请你详细说明我的答复如何不能回答这个问题吗?这不能回答这个问题。一旦你有足够的钱,你将能够;相反@我可以请你详细说明我的答复如何不能回答这个问题吗?