object a = new object();
a = 0;decimal d = (decimal)a;    //报错:Specified cast is not validConvert.ToDecimal 和 decimal.parse 就没有问题.
为什么a = 0时会报错?能不能讲一下原理,谢谢!

解决方案 »

  1.   

    因为Data type decimal没有自动转换object到decimal的operator.
    虽然你把a赋予了0可是a本身的data type还是object. 如果你使用的是.NET 3.5的话, 你可以使用
    var a = 0;decimal d = (decimal)a;查找问题的关键词: implicit和explicit
      

  2.   

    object a = new object(); 
    a = 0; //这个时候a是int类型
    所以不能隐士转换。要用convert等函数转换decimal d = (decimal)a;    //报错:Specified cast is not valid Convert.ToDecimal 和 decimal.parse 就没有问题
      

  3.   

    Kamui,
    thank you , your are right.