short向int的转换出错了

查询access数据库得到dt,其中dt.Rows[i][7]调试状态下通过快速监视看类型是: object {short},我需要将其赋给Int类型的变量:
C# code
Int hat =(int )dt.Rows[i][7]

结果报错:“异常消息"指定的转换无效。"string”,通过快速监视查看(int )dt.Rows[i][7]的值,显示“(int )dt.Rows[i][7] 无法将“dt.Rows[i][7]”作为“int”取消装箱”。
什么原因呢?望大家指点,谢谢!

作者: jshzp   发布时间: 2011-06-16

object {short}说明装箱前是short类型的,直接拆箱也只能拆成short类型的,
改成Int hat =Convert.ToInt32(dt.Rows[i][7]就ok了,强转是可以的

作者: reface   发布时间: 2011-06-16

dt.Rows[i][7]好象不是C#的语法,应该是dt.Rows[i,7], 试试?

作者: jq_whh   发布时间: 2011-06-16

拆箱后的类型只能是装箱前的那个数据类型,是吗?
这里面的基本概念是怎样的啊?我不太懂,谢谢!

作者: jshzp   发布时间: 2011-06-16

引用 2 楼 jq_whh 的回复:
dt.Rows[i][7]好象不是C#的语法,应该是dt.Rows[i,7], 试试?

“dt.Rows[i][7]”没有问题,dt是数据库查询后得到的DataTable。

作者: jshzp   发布时间: 2011-06-16

int hat = Convert.ToInt32(dt.Rows[i][7]);

作者: caozhy   发布时间: 2011-06-16