Convert.ToInt32和Int32.Parse有什么区别?

C# ,您可以使用Int32.ParseConvert.ToInt32将字符串转换为Int32。 它们之间有什么区别? 哪个表现更好? 我应该使用Convert.ToInt32不是Int32.Parse ,反之亦然?

如果您使用Reflector或ILSpy查看mscorlib您将看到Convert.ToInt32的以下代码

 public static int ToInt32(string value) { if (value == null) { return 0; } return int.Parse(value, CultureInfo.CurrentCulture); } 

所以,在内部它使用int.Parse但使用CurrentCulture 。 实际上,从代码中可以理解为什么当我像参数一样指定null时,此方法不会抛出exception。

基本上Convert.ToInt32在场景后面使用’Int32.Parse’但在底线Convert.ToInt32 null将返回0.而在Int32.Parse中将引发exception。

Int32.Parse(string s)方法将数字的字符串表示forms转换为其等效的32位有符号整数。 当s是空引用时,它将抛出ArgumentNullException。

Convert.ToInt32(string s)方法转换32位有符号整数等效的指定字符串表示forms。 这反过来调用Int32.Parse()方法。 当s是空引用时,它将返回0而不是抛出ArgumentNullException。

Convert.ToInt32(字符串值)

来自MSDN:

返回一个等于value值的32位有符号整数。 – 或者 – 如果值是空引用则为零(在Visual Basic中为Nothing)。 返回值是在值上调用Int32.Parse方法的结果。