intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);
哪一个更好,为什么?
答案 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则不提供该选项。