指定的转换无效。

这是一个很常见的问题,但是我这次却弄了很久。将所遇到的问题写下来,给各位朋友参考参考。

报错的形式像这样,其实上面已经说的很清楚了,指定的转换无效。就是说你从原类型强制转换成其它类型的时候无效,发生了错误。原因可能有一下两点:

1、数字太大或太小,转换失败。

2、原类型无法被识别,转换错误。例如当你把object类型的数据强制转换为int类型的时候,你就要注意了。一般来说object类型有很多种,当object代表一个对象时,这种强制转换就很可能出现问题。这次是莫名其妙的object的值为77,然后单机值的时候成了"77M",真够郁闷的,还希望大侠们能够告诉我这是为什么。

object o=this.dlnew.DataKeys[e.Item.ItemIndex];//这是在datalist中ItemDataBound事件中取值的代码

然后int num=(int)o;//这里出现了如上所诉的问题。

然后 int num1=int.parse(o.ToString());

int  num2=convert.toint32(o);

后面两种均没有问题,另外第一种取值如果是在sqlserver中是没有问题的。我怀疑是不是在number类型转换成int类型的时候会自动在后面加上M。

最后建议和我一样的菜鸟以后最好是不要用强制转换。会很苦逼的,呵呵~

请各位大侠指教!

posted @ 2013-07-15 17:01  FengLu-1  阅读(12818)  评论(2编辑  收藏  举报