Convert.ToInt32 和 Int32.Parse 有啥区别? [复制]
Posted
技术标签:
【中文标题】Convert.ToInt32 和 Int32.Parse 有啥区别? [复制]【英文标题】:What's the difference between Convert.ToInt32 and Int32.Parse? [duplicate]Convert.ToInt32 和 Int32.Parse 有什么区别? [复制] 【发布时间】:2013-03-31 11:18:39 【问题描述】:在C#
中,您可以使用Int32.Parse
和Convert.ToInt32
将字符串转换为Int32。他们之间有什么区别?哪个表现更好?在哪些情况下我应该使用Convert.ToInt32
而不是Int32.Parse
,反之亦然?
【问题讨论】:
@vanneto:这个问题可能是重复的,但答案不是。 【参考方案1】:如果您使用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
时,此方法不会引发异常。
【讨论】:
【参考方案2】:基本上Convert.ToInt32
在幕后使用“Int32.Parse”,但在底线
Convert.ToInt32
null
将返回 0。而在 Int32.Parse
中将引发异常。
【讨论】:
【参考方案3】:Int32.Parse (string s) 方法将数字的字符串表示形式转换为其等效的 32 位有符号整数。当 s 为空引用时,会抛出 ArgumentNullException。
而
Convert.ToInt32(string s) 方法将指定的字符串表示形式转换为等效的 32 位有符号整数。这又调用了 Int32.Parse() 方法。当 s 为空引用时,它将返回 0 而不是抛出 ArgumentNullException。
【讨论】:
【参考方案4】:Convert.ToInt32(字符串值)
来自 MSDN:
返回一个与 value 值等效的 32 位有符号整数。 - 或 - 如果 value 是空引用,则为零(在 Visual Basic 中为 Nothing)。
返回值是对 value 调用 Int32.Parse
方法的结果。
【讨论】:
以上是关于Convert.ToInt32 和 Int32.Parse 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Convert.ToInt32()和int.Parse()的区别
Convert.ToInt16 或 32 或 64 和 Int.Parse 有啥区别? [复制]
更好地使用 int.Parse 或 Convert.ToInt32 [重复]