Convert.ToInt32()、Int.Parse()、Int.TryParse()和(int)

1、转换对象不同

  Convert.ToInt32()中可以为多种类型(除了DateTime,转换DateTime类型数据始终会报InvalidCastException异常),它适合将Object类型转换为int类型。int.Parse()和int.TryParse()中只能是整型字符串类型(即各种整型ToString()之后的形式,不能为浮点型,如4.5,否则int.Parse()就会出现输入的字符串格式不正确的错误。int.TryParse()也会返回false,输出参数为0),(int)只能转换数字类型(例float,int,uint等)。

2、对于Null的处理不同

  从运行报错的角度讲,(int)强制转换和int.Parse()都不能接受Null。Convert.ToInt32其实是在转换前先做了一个判断,参数如果为Null,则直接返回0,否则就调用int.Parse()进行转换,int.TryParse()其实是对int.Parse做了一个异常处理,如果出现异常则返回false,并且将输出参数返回0。

3、针对浮点型的取舍不同

  浮点型只有Convert.ToInt32()和(int)能进行转换,但是也是进行取舍了的,Convert.ToInt32()采取的取舍并不是四舍五入,而是遵循:如果浮点数为两个整数中间的数(如:4.5,5.5,6.5),则返回二者中的偶数(即4,6,6);而其他的数又分为比中间数稍大的数,如4.6,则返回5;比中间数稍小的数,如4.4,则返回4。而(int)则是截取浮点型的整数部分,忽略小数部分。如参数是4.5的话,Convert输出5,(int)输出4。

4、关于溢出不同

  将大的数据类型转换为小的数据类型时,Convert.ToInt32()和int.Parse()都会报溢出错误,值对于Int32太大或太小,而(int)不报错,如果数太大则返回int32的最小值,如果数太小则返回int32的最大值。

5、扩展

  探索了int各种转换的区别后,我也想知道常用的ToString()和Convert.ToString()有什么区别呢?这里不做深入研究,不过有一点可以确定,那就是用Null值ToString()会报空指针异常,而用Convert.ToString()则返回空字符串,不会报异常,看来它在转换之前已经做了简单的异常处理。

总结

  如此可见,我们在进行数据转换前选择转换方法要谨慎,如果是数字类型可以考虑直接用(int)强制转换,如果是整型字符串类型的,考虑用int.Parse()进行转换,如果不是这两种类型,再考虑用Convert.ToInt32()进行转换。
  
原文:百度知道(一)百度知道(二)MSDN

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值