为了帮助大家更好地学习 .Net Framework 技术,微软论坛技术支持团队编辑了一些列的 ".Net Framework 常见问题及解答" 精华帖。
本帖的主题是:(int), Int32.Parse和Convert.ToInt32有什么不同之处?
如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。
如果您想阅读更多的 ".Net Framework 常见问题及解答",请打开索引页面:
http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/b8c520b0-3ae8-4129-88a6-6221863a09c4
(int)是一种被称为强制转换的显示转换。源变量和目标变量必须是兼容的。并且有丢失数据的风险。因为目标变量的类型大小小于源变量。
允许显示数值转换的列表可以参考下面链接。
http://msdn.microsoft.com/en-us/library/yht2cx7b.aspx
Int32.Parse方法仅允许将字符串转换整型。
Convert.ToInt32(String, IFormatProvider)底层是调用Int32.Parse. 然而假如我们传入一个空字符串会返回0. 但是如果是传递给Int32.Parse就会抛出ArgumentNullException异常。
当源变量值比Int32.MaxValue大或者比Int32.MinValue小,Convert.ToInt32会抛出
OverflowExcetion异常。但是使用(int)则不会。
Convert.ToInt32 将舍入到最接近的 32 位有符号整数。如果值为中间两个的整体数字则返回偶数;这就是 4.5 转换为 4,而 5.5 转换为 6。而在另一方面 (int) 只是截断小数部分。
如果想了解更多关于强制类型转换和类型转换,可以参考下面的文档。
Casting and Type Conversions (C# Programming Guid)
http://msdn.microsoft.com/en-us/library/ms173105.aspx
Type Conversions in Visual Basic
http://msdn.microsoft.com/en-us/library/hcb26cc8(VS.80).aspx
有关的帖子:
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/1ca53a60-e094-4073-ab33-27cca0bdbad4