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.ParseConvert.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) 有啥区别?

Convert.ToInt32()和int.Parse()的区别

Convert.ToInt16 或 32 或 64 和 Int.Parse 有啥区别? [复制]

更好地使用 int.Parse 或 Convert.ToInt32 [重复]

C#中(int)int.Parse()int.TryParse()和Convert.ToInt32()的区别

Convert.ToInt32(int)和int.Parse三者的区别