为什么不能将已装箱的int直接转换为double
object o = 12;
double d = (double)o;抛出无效类型转换异常。相反,它似乎必须首先转换为int,然后再转换为double。
object o = 12;
double d = (double)(int)o;我确信简单的答案是“因为这就是拳击的工作原理”,但我希望有人能在这里给你一些启发。
发布于 2011-03-15 21:57:41
看看今天早些时候的这个问题:Why am I getting InvalidCastException?
仅当目标类型与已装箱的原始类型完全相同时,
取消装箱操作才会成功,因此会引发异常。John Leidegren提供的This link详细解释了这一点。
发布于 2016-11-11 19:37:07
如果您不知道编译时的原始类型:
object o = 12;
double d = (double)Convert.ChangeType(o, typeof(double));https://stackoverflow.com/questions/5312731
复制相似问题