A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© y494890511 高级黑马   /  2013-11-6 21:40  /  2052 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 y494890511 于 2013-11-12 08:49 编辑

c#语言中 (int)、int.Parse()、int.TryParse、Convert.toint32()的用法区别优缺点。

4 个回复

倒序浏览
本帖最后由 dashanren 于 2013-11-7 14:35 编辑

1、(int)是一种类型转换;当我们从int类型到long,float,double,decimal类型,可以使用隐式转换,但是当

我们从long类型到int类型就需要使用显式转换,否则会产生编译错误。
2、int.Parse()是一种类容转换;表示将数字内容的字符串转为int类型。
如果字符串为空,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常;
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;
3、int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0
4、Convert.ToInt32()是一种类容转换;但它不限于将字符串转为int类型,还可以是其它类型的参数;
比较:
Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。

Convert.ToInt32 参数为 "" 时,抛出异常;
int.Parse 参数为 "" 时,抛出异常。

Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
回复 使用道具 举报
先说(int) --显式转换,要求转换的类型兼容,比如说double float  int  short等这些类型属于兼容类型,string类型和这些类型就不兼容,此转换缺点可能会丢失精度 (程序员负责任),例如:
丢失精度:
double d = 10.55;
int a = (int)d; // 结果:10

int.Parse()和Convert.ToInt32()基本类似,唯一区别就是处理null值的不同,前者引发异常,后者返回0,
这里推荐篇文章给你看看:http://www.cnblogs.com/linyechengwei/archive/2008/11/10/1330819.html

bool  int.TryParse(string s, out int result) 将待转字符串转换为int类型,
转换成功返回true同时转换成功的值存储在了int类型的变量result中了,
转换失败返回false,result为0;
例子:
  1. string s = "123";
  2.             int i;
  3.             if (int.TryParse(s, out i))
  4.             {
  5.                 Console.WriteLine(i);
  6.             }
  7.             else
  8.             {
  9.                 Console.WriteLine(i);
  10.             }
复制代码
运行结果:123




回复 使用道具 举报
本帖最后由 何俞平 于 2013-11-6 22:56 编辑

1.(int)强制转换,将大范围的数字类型转换成int类型,类型有double,float,decimal,enum. int number=(int) 待转换的变量。
用法:int number=(int)待转换的变量
   注:必须是数字类型的变量才能转换,强制转换会丢失精度(没了小数点)。
2.int.Parse()是convert中的一个方法,也就是说使用convert.toint32就是调用CONVERT类中的int.Parse()方法,它们用于转换非数字类型为数字类型,最常用的是将字符串转换成int类型
用法:int number=Convert.ToInt(待转换的变量);     int number=Int.Parse(待转换的变量);
例:转换字符串     string str="123";           int number=Convert.ToInt(str);
3.int.TryParse   尝试将非数字类型转换成int类型,返回的值是bool类型,我们可以使用out参数得到转换成功后的int类型的整数
用法:bool b=Int.TryParse(待转换的变量,out int类型的变量);  
         转换成功后b=true,同时得到整数;转换失败,b=false;
以转换字符串为例:
string str="1243";                          //待转换的字符串
  int number;                               //声明一个int类型的变量number用来接收转换成功多返回的整数,number可以不赋值
   bool b=Int.TryParse(str,out number);               //转换成功后b=true,同时得到转换成功后的整数;转换失败,b=false;
注:(1)int.TryParse  ,int.Parse()和convert.toint32用于转换非数字类型为int类型
         (2)使用 int.Parse()和convert.toint32方法,当待转换的变量中不全是数字时,程序会抛异常,这时使用try-catch解决。
          (3)使用 int.TryParse 转换 非数字类型为int类型,不会抛异常,在不确定待转换的变量是否全是数字时,最好使用int.TryParse。而确定待转换的变量全是数字时,使用int.Parse()和convert.toint32(用法简单)。
           
回复 使用道具 举报
(int)是一种类型转换;当我们从int类型到long类型,可以使用隐式转换,但是当我们从long类型到int类型就需要使用显式转换,否则会产生编译错误。
int.Parse()是将字符串类型转换成为数值类型。
int.TryParse转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0
Convert.ToInt32是比较全能的,Convert类可以实现各种类型之间的转换,并且为其每种类型都提供了一个对应的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马