【发布时间】:2019-01-20 03:44:57
【问题描述】:
intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);
哪个更好,为什么?
【问题讨论】:
标签: c#
intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);
哪个更好,为什么?
【问题讨论】:
标签: c#
它们完全相同,只是Convert.ToInt32(null) 返回0。
Convert.ToInt32定义如下:
public static int ToInt32(String value) {
if (value == null)
return 0;
return Int32.Parse(value, CultureInfo.CurrentCulture);
}
【讨论】:
好吧,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() 做了一个额外的空检查。
【讨论】:
这取决于您所说的“更好”是什么意思,因为“更好”是主观的。
例如 - 代码可读性。有些人喜欢在他们的代码中看到“转换”;其他人更喜欢看“Parse”。
在速度方面,它们也大致相等according to these benchmarks。
或者你总是想要一个返回值?正如其他人所提到的,ConvertTo 为空值返回 0(零),而 Parse 没有该选项。
【讨论】: