代码如下:
...
SqlDataRead read ...;
...(int) read[0]; //出 错 
Convert.ToInt32(read[0]); //OK
这两种转换方式有什么区别吗,怎么第一种会出错?
另外 这个转换是用在一个方法的参数,有什么更好的方法吗?

解决方案 »

  1.   

    read[0]是object类型
    第一种是强制类型转换
    当read[0]=null时  两种方法都会出错先对read[0]进行非空判断 再用 Int.TryParse()方法进行转换
      

  2.   

    两种在转换上有什么区别 为什么同样的数据 
    强制类型转换不能而用Convert.ToInt32可以
      

  3.   

    (int)read[0]是显式转换,也是一种强制转换,这种转换不能保证总是成功,显式装换包含所有的隐式转换
    Convert.ToInt32应用的应该是一个类函数吧、、、
      

  4.   

    这两种都是显式转换,只不过Convert.ToInt32(read[0])转换时参数可以是Object类型(这种转换参数类型范围比较大),而前者(int) read[0]; 不可以(也就是(int)后面跟的类型不能使object类型)。
      

  5.   

    (int)(read[0])这种强制转换方式read[0]返回的值为object类型
    而这种方式,只允许从string 类型转换为相应类型。使用万能转换器Convert吧。