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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马田杰 中级黑马   /  2013-4-10 09:39  /  2759 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马田杰 于 2013-4-10 23:42 编辑

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

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

ObjectToInt.png

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

12 个回复

倒序浏览
图片有点看不清楚,我个人觉得转换成(Integer)类型的就可以了。Object是所有类的父类。所有类默认都要继承它。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
Convert.ToInt32()搞定
回复 使用道具 举报
Convert.ToInt32()或Int32.Parse()
回复 使用道具 举报
Asan 发表于 2013-4-10 10:19
图片有点看不清楚,我个人觉得转换成(Integer)类型的就可以了。Object是所有类的父类。所有类默认都要继 ...

点一下图片就可以看到大图了
回复 使用道具 举报
郑丹丹1990 发表于 2013-4-10 12:57
Convert.ToInt32()或Int32.Parse()

但不知道这样强转为什么会出错。

点评

你看下"12"的type.  发表于 2013-4-10 14:57
回复 使用道具 举报
张正强 发表于 2013-4-10 10:30
Convert.ToInt32()搞定

但不知道这样强转为什么会出错。
回复 使用道具 举报
黑马田杰 发表于 2013-4-10 14:47
但不知道这样强转为什么会出错。

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

看来可能是这个原因了,看来以后强转尽量用Convert和parse了
回复 使用道具 举报
张正强 发表于 2013-4-10 15:02
错误提示是数字超出范围,应该是对e.CommanArgument进行强转后超出了int的范围,看到e.CommanArgument的 ...

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

恩,以后注意这点了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马