为什么不能将已装箱的int
直接投射到double
?铸造盒装值
object o = 12;
double d = (double)o;
这抛出了无效的转换异常。相反,它似乎必须首先投射为int
,然后再投射到double
。
object o = 12;
double d = (double)(int)o;
我敢肯定,简单的答案是“因为这就是拳击的作品”,但我希望有人可以在这里摆脱一些光。
为什么不能将已装箱的int
直接投射到double
?铸造盒装值
object o = 12;
double d = (double)o;
这抛出了无效的转换异常。相反,它似乎必须首先投射为int
,然后再投射到double
。
object o = 12;
double d = (double)(int)o;
我敢肯定,简单的答案是“因为这就是拳击的作品”,但我希望有人可以在这里摆脱一些光。
退房从今天早些时候这样一个问题:如果目标类型是完全一样被堵住原有的类型,所以异常被抛出Why am I getting InvalidCastException?
拆箱操作才能成功。 John Leidegren提供的This link详细解释。
如果你不知道在编译时的原始类型:
object o = 12;
double d = (double)Convert.ChangeType(o, typeof(double));
参见:表示与认同 - 神话般的冒险编码(http://blogs.msdn.com/b /ericlippert/archive/2009/03/19/representation-and-identity.aspx) – Ani 2011-03-15 13:52:28
@Ani - 把这个作为答案,我会在一秒钟内赞扬它! – 2011-03-15 13:53:38
同上 - ani - 对我来说看起来是正确的答案 – 2011-03-15 13:54:02