用Reflector 查看源码:
Convert类:
public static int ToInt32(object value)
{
if (value != null)
{
return ((IConvertible) value).ToInt32(null);
}
return 0;
}
参数为object时调用什么样的方法是要看该value实际类型的。
如果为string:
String类:
int IConvertible.ToInt32(IFormatProvider provider)
{
return Convert.ToInt32(this, provider);
}
Convert类:
public static int ToInt32(string value, IFormatProvider provider)
{
if (value == null)
{
return 0;
}
return int.Parse(value, NumberStyles.Integer, provider);
}
最后回到了调用int.Parse(...)
如果是其他类型并不完全不同。
这个性能差别就在几个函数的调用上。可以说几乎区别是非常小的。
如果真要最求这个性能,我推荐用int.TryParse(...)。这个方法不会抛出异常。
一个异常的抛出和捕获比几个函数的调用消耗可大多了。