今天在调试C#程序时,遇到了需要将object类型转换成int类型进行运算的问题。
如,将dr["max_number"].ToString()与dr["current_number"].ToString()中的max_number和current_number进行减法运算。其中的dr["max_number"]和dr["current_number"]是object类型的数据。
肯定要用到类型转换,于是才采用int强转,(int)dr["max_number"],然后在进行运算。
测试的时候系统报错,当从一个数字执行强制转换时,值必须是一个小于无限大的数。
说明这样类型转换不可行,查阅资料后才知道,这涉及拆箱操作。
从object类型转换为数据的原始类型需要进行拆箱操作,对于结构体拆箱操作需要严格的类型对应,
原来是int只能强转成int,原来是char只能强转成char,他不会制动帮你执行隐式类型转换,
所以这里应该使用Convert.ToInt32(dr["max_number"]),它会在内部执行IConvertible接口进行转换
修改过后,测试通过。