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

时间:2013-04-09 06:39:39

标签: c#

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

4 个答案:

答案 0 :(得分:18)

如果您使用ReflectorILSpy查看mscorlib,您会看到Convert.ToInt32的以下代码

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:3)

  

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

,而

  

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

答案 3 :(得分:2)

  

Convert.ToInt32(字符串值)

来自MSDN:

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