【问题标题】:Int32.Parse() VS Convert.ToInt32()?Int32.Parse() VS Convert.ToInt32()?
【发布时间】:2019-01-20 03:44:57
【问题描述】:
intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);

哪个更好,为什么?

【问题讨论】:

标签: c#


【解决方案1】:

它们完全相同,只是Convert.ToInt32(null) 返回0

Convert.ToInt32定义如下:

    public static int ToInt32(String value) {
        if (value == null) 
            return 0;
        return Int32.Parse(value, CultureInfo.CurrentCulture);
    }

【讨论】:

【解决方案2】:

好吧,Reflector 说……

public static int ToInt32(string value)
{
    if (value == null)
    {
        return 0;
    }
    return int.Parse(value, CultureInfo.CurrentCulture);
}

public static int Parse(string s)
{
    return Number.ParseInt32(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo);
}

所以它们基本上是相同的,只是Convert.ToInt32() 做了一个额外的空检查。

【讨论】:

    【解决方案3】:

    这取决于您所说的“更好”是什么意思,因为“更好”是主观的。

    例如 - 代码可读性。有些人喜欢在他们的代码中看到“转换”;其他人更喜欢看“Parse”。

    在速度方面,它们也大致相等according to these benchmarks

    或者你总是想要一个返回值?正如其他人所提到的,ConvertTo 为空值返回 0(零),而 Parse 没有该选项。

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 2010-10-12
      • 2015-06-12
      • 2019-03-15
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多