Int32.Parse()VS Convert.ToInt32()?

时间:2010-09-15 00:57:06

标签: c#

intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);

哪一个更好,为什么?

3 个答案:

答案 0 :(得分:37)

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

Convert.ToInt32定义如下:

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

答案 1 :(得分:6)

好吧,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()添加了空检查。

答案 2 :(得分:0)

取决于“更好”的含义,因为“更好”是主观的。

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

就速度而言,它们也大致等于according to these benchmarks

还是您始终希望返回一个值?就像其他人提到的那样,ConvertTo对于空值返回0(零),而Parse则不提供该选项。