2013-04-09 27 views
9

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

+3

@vanneto:问题可能是重复的,但答案不是。 – th1rdey3 2013-04-09 06:51:53

回答

8

基本上Convert.ToInt32用途“Int32.Parse”后面的场景,但在底线 Convert.ToInt32null将返回0,而在一个Int32.Parse异常将引发。

2

Convert.ToInt32(字符串值)

从MSDN:

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

2

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

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

18

如果你看看与ReflectorILSpymscorlib你会看到下面的代码Convert.ToInt32

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

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