【问题标题】:What is the Difference Between Convert.Int32() and Int32.Parse()?Convert.Int32() 和 Int32.Parse() 有什么区别?
【发布时间】:2009-09-30 20:19:06
【问题描述】:

我在使用 Convert.Int32() 和 int32.Parse() 时有些困惑。 当我们使用 Convert.Int32() 或 int32.Parse()...

【问题讨论】:

    标签: .net


    【解决方案1】:

    Convert.ToInt32() 将尝试将任何内容(无论是 char、double、object 还是您拥有的内容)转换为 Int32。 Int32.Parse() 仅适用于字符串。

    编辑:针对 OP 的评论,我引用了 from this thread

    基本上是 Convert 类使它 更容易在所有基础之间转换 类型。

    Convert.ToInt32(String, IFormatProvider) 下面调用 Int32.解析。所以唯一的区别是 如果一个空字符串被传递给 转换它返回 0,而 Int32.Parse 抛出一个 ArgumentNullException。

    这真的是一个选择的问题 无论您使用哪个。

    【讨论】:

    • 您可能还需要注意警告。例如:Convert.ToInt32('9') 将产生 57(ascii 值),而 Convert.ToInt32("9") 将产生 9。如果存在隐式转换,则将使用转换。
    • 嗨,马修。如果我有一个字符串值并且需要将其转换为整数值,那么最好使用...
    • 如果你有一个字符串,使用 parse 或 tryParse。
    • @Vijj int.TryParse(...) 如果你不能保证你的字符串是整数。
    • @@ Vijj 出去走走,然后回来查看相对相似的条目stackoverflow.com/questions/641304/… :)
    【解决方案2】:

    扩展马修的答案。

    Convert.ToInt32 允许以可扩展的方式进行用户定义的转换。对于任何非预定义的转换(主要是原语),Convert 类将检查并查看该类型是否实现了 IConventible,如果是,则使用它来允许对象定义它自己到 Int32(和许多其他类型)的转换。

    【讨论】:

      【解决方案3】:

      Convert.ToInt32 会将null 转换为0Int32.Parse 将在您传递 null 时抛出异常。此外,as Matthew Jones saidInt32.Parse 仅适用于字符串。

      更多信息请见this article

      【讨论】:

        【解决方案4】:

        根据 MSDN,Parse() 用于将字符串转换为 int,其中 Convert 更适用于转换。

        Int32.Parse()

        Convert.Int32() 应该是你的主要选择

        【讨论】:

          猜你喜欢
          • 2013-03-31
          • 2011-01-19
          • 2022-12-12
          • 1970-01-01
          • 1970-01-01
          • 2021-06-11
          • 2015-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多