哪个更好用:Convert.ToX或X.Parse(...)?

Mic*_*cah 6 .net c# performance .net-4.0 type-conversion

我正在使用反射创建一些对象.我正在设置的值是从文件读入的,因此它们本身是字符串格式,我需要将它们转换为属性的数据类型.

我的问题是,哪个更快/更好用:Convert.ToX(...)方法或X.Parse(...)方法?

Cod*_*ray 11

所有Convert.ToX接受类型参数的函数string最终都会调用Parse相应数据类型的方法.

例如,Convert.ToInt32(string)看起来像这样:

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

所有其他数字转换方法都是一样的,包括DecimalDateTime.所以你使用哪一个是相当无关紧要的; 在任何一种情况下,结果(和速度)都是相同的.

真的,唯一的区别是if (value == null)开头的护卫条款.这是否方便取决于具体的用例.通常,如果您知道自己有一个非null string对象,那么您也可以使用Parse.如果你不确定,ConvertToX是一个更安全的赌注,请求更少的内联空值检查代码.