【问题标题】: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:这个问题可能是重复的,但答案不是。

标签: c#


【解决方案1】:

如果您使用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 时,此方法不会引发异常。

【讨论】:

    【解决方案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 方法的结果。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-09
          • 2016-07-25
          • 2010-10-12
          • 2011-01-19
          • 2022-12-12
          相关资源
          最近更新 更多