黑马程序员技术交流社区

标题: 从object强制转换为int时的异常? [打印本页]

作者: 黑马田杰    时间: 2013-4-10 09:39
标题: 从object强制转换为int时的异常?
本帖最后由 黑马田杰 于 2013-4-10 23:42 编辑

如图,已知 e.CommandArgument 为object类型,值为12,强制转换为int时为什么会出现异常,这个异常是什么意思?

ObjectToInt.png (25.67 KB, 下载次数: 177)

ObjectToInt.png

作者: Asan    时间: 2013-4-10 10:19
图片有点看不清楚,我个人觉得转换成(Integer)类型的就可以了。Object是所有类的父类。所有类默认都要继承它。
作者: 张正强    时间: 2013-4-10 10:30
Convert.ToInt32()搞定
作者: 郑丹丹1990    时间: 2013-4-10 12:57
Convert.ToInt32()或Int32.Parse()
作者: 黑马田杰    时间: 2013-4-10 14:37
Asan 发表于 2013-4-10 10:19
图片有点看不清楚,我个人觉得转换成(Integer)类型的就可以了。Object是所有类的父类。所有类默认都要继 ...

点一下图片就可以看到大图了
作者: 黑马田杰    时间: 2013-4-10 14:47
郑丹丹1990 发表于 2013-4-10 12:57
Convert.ToInt32()或Int32.Parse()

但不知道这样强转为什么会出错。
作者: 黑马田杰    时间: 2013-4-10 14:47
张正强 发表于 2013-4-10 10:30
Convert.ToInt32()搞定

但不知道这样强转为什么会出错。
作者: 张正强    时间: 2013-4-10 15:02
黑马田杰 发表于 2013-4-10 14:47
但不知道这样强转为什么会出错。

错误提示是数字超出范围,应该是对e.CommanArgument进行强转后超出了int的范围,看到e.CommanArgument的值为12,但用二进制表示的话可能就超出了32位了,没有实际验证,只是我的想法,呵呵
作者: 张振    时间: 2013-4-10 15:33
int 是有范围的 而你的object可能有的值会超出int的范围 比如 你的object可能是超出了32位数,而你的int 只在32位之内 所以报错
作者: 黑马田杰    时间: 2013-4-10 15:59
张振 发表于 2013-4-10 15:33
int 是有范围的 而你的object可能有的值会超出int的范围 比如 你的object可能是超出了32位数,而你的int 只 ...

看来可能是这个原因了,看来以后强转尽量用Convert和parse了
作者: 黑马田杰    时间: 2013-4-10 15:59
张正强 发表于 2013-4-10 15:02
错误提示是数字超出范围,应该是对e.CommanArgument进行强转后超出了int的范围,看到e.CommanArgument的 ...

看来可能是这个原因了,看来以后强转尽量用Convert和parse了
作者: 宋兴征    时间: 2013-4-10 21:57
杨老师讲的,int类型转换都是用:Convert.ToInt32(object obj)的,我基本也不用int i=(int)a;这样转。

作者: 黑马田杰    时间: 2013-4-10 23:41
宋兴征 发表于 2013-4-10 21:57
杨老师讲的,int类型转换都是用:Convert.ToInt32(object obj)的,我基本也不用int i=(int)a;这样转。
...

恩,以后注意这点了




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