之间有什么区别:
value.ToString()
和
(string)Convert.ChangeType(value, typeof(string))
答案 0 :(得分:3)
在确保类型为IConvertable.ToString
之后调用IConvertable
。
case TypeCode.String:
return (object) convertible.ToString(provider);
因此,只需使用ToString
拨打IFormatProvider
,就可以完成更多工作。它将全部依赖于实现IConvertable
的类型的实现。
provider
来自(IFormatProvider) Thread.CurrentThread.CurrentCulture
。
这是int
的作用。
public override string ToString()
{
return Number.FormatInt32(this, (string) null, NumberFormatInfo.CurrentInfo);
}
public string ToString(string format)
{
return Number.FormatInt32(this, format, NumberFormatInfo.CurrentInfo);
}
public string ToString(IFormatProvider provider)
{
return Number.FormatInt32(this, (string) null, NumberFormatInfo.GetInstance(provider));
}
public string ToString(string format, IFormatProvider provider)
{
return Number.FormatInt32(this, format, NumberFormatInfo.GetInstance(provider));
}
答案 1 :(得分:1)
当目标类型为字符串时,Convert.ChangeType的工作方式如下:
if (value == null)
{
return null;
}
var convertible = value as IConvertible;
if (convertible == null)
{
throw new InvalidCastException();
}
return convertible.ToString();
所以它与value.ToString();
完全不同