在C#
中,您可以使用Int32.Parse
和Convert.ToInt32
将字符串转换为Int32。他们之间有什么区别?哪个表现更好?我应该使用Convert.ToInt32
而不是Int32.Parse
,反之亦然的情景是什么?
答案 0 :(得分:18)
如果您使用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
时,此方法不会引发异常。
答案 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
方法的结果。