黑马程序员技术交流社区

标题: 关于类型转换 “Convert” 与 “Parse” 的区别,哪个效率高? [打印本页]

作者: guo329838627    时间: 2013-9-25 19:58
标题: 关于类型转换 “Convert” 与 “Parse” 的区别,哪个效率高?
本帖最后由 guo329838627 于 2013-9-26 11:10 编辑

             1.“Convert”与“Parse”之间有啥子区别。             2.哪个效率比较高?  

作者: 0和1,编程世界    时间: 2013-9-25 20:17
这两个方法我们经常在使用,但是它们之间有什么区别呢,下面的代码让你比较清晰的明白区别所在:

   1:              string convertToInt = "12";
   2:              string nullString = null;
   3:              string maxValue = "32222222222222222222222222222222222";
   4:              string formatException = "12.32";
   5:   
   6:              int parseResult;
   7:   
   8:              // It will perfectly convert interger
   9:              parseResult = int.Parse(convertToInt);
  10:   
  11:              // It will raise Argument Null Exception
  12:              parseResult = int.Parse(nullString);
  13:   
  14:              //It willl raise Over Flow Exception
  15:              parseResult = int.Parse(maxValue);
  16:   
  17:              //It will raise Format Exception
  18:              parseResult = int.Parse(formatException);
  19:   
  20:   
  21:              //For Convert.ToInt32
  22:   
  23:              //It will perfectly convert integer
  24:              parseResult = Convert.ToInt32(convertToInt);
  25:   
  26:              //It will ouput as 0 if Null string is there
  27:              parseResult = Convert.ToInt32(nullString);
  28:   
  29:              //It will raise Over Flow Exception
  30:              parseResult = Convert.ToInt32(maxValue);
  31:   
  32:              //It will raise Format Exception
  33:              parseResult = Convert.ToInt32(formatException);

           区别就是Convert.ToInt32(string) 方法遇到空时会返回0,而Int.Parse则会Throw Exception. 我们还可以使用Int32.TryParse方法更加安全。
希望对你有所帮助

作者: 274997322    时间: 2013-9-26 00:14
  Parse只能讲string类型的数据转换为指定数据,如果传输的string类型无法转换成目标类型就会报错,传入的不是string类型,无法通过编译。
  Convert则可以转换更多类型,Convert有自己独特的一套算法来进行类型转换,如Convert.ToInt32(object) 当传如的是null的时候,就会返回0,如果是字符,如‘a’的时候
则会返回对应的ASCII码,当然非数字字符串传入也是会报错的。
   应该Parse的效率更高,因为算法简单。缺点是只能转换string类型的数据
   而Convert能支持的转换类型更加丰富。
作者: 韩继新    时间: 2013-9-26 09:14
一、区别:Convert.ToInt32()如果是参数是object或string的时候也是调用int.Parse来转换的,对于其它的如float,double等等只是检查一下数值范围然后return (int)value;char类型直接返回,bool类型真返回1,假返回0;
二、int.Parse效率高,因为用Convert.ToInt32()还是要调用int.Parse的,所以不如直接调用int.Parse的效率高




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2