c#强制类型转换的问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:57:15
(int)dt.rows["id"][0];
Convert.toInt32(dt.rows["id"][0]);
这两者有什么区别?
为什么有时候前者不能用呢?

因为dt.rows["id"][0]存放的是一个对象object.如果这个对象中的数据类型就是整形的话,那么(int)dt.rows["id"][0]和Convert.toInt32(dt.rows["id"][0]); 这两情况都可以通过。如果存放的字符串什么的。第一种情况就不能通过。他是显示转换。

http://zhidao.baidu.com/question/5393280.html
去看看吧

这两个是有区别的,前者是一种装箱拆箱的过程(表达式并不作真正的转换,只是“把装在箱子里的值给取出来”),就是说被转换类型本身必须是将要转换成的那种类型,否则必然出错;而后者是一种真正意义上的“转换”,Convert可以将任何类型(比如String, Double, Object等)转换成Int32。

如果dt.rows["id"][0]本身存的就是一个int的值,那第一种是可以通过的;但是如果不是,那就得用第二种方法做强制转换了。

顺便,教你另外一种方法int.Parse(dt.rows["id"][0].ToString()),呵呵。