首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制转换已装箱的值

强制转换已装箱的值
EN

Stack Overflow用户
提问于 2011-03-15 21:50:48
回答 2查看 1.3K关注 0票数 14

为什么不能将已装箱的int直接转换为double

代码语言:javascript
复制
object o = 12;
double d = (double)o;

抛出无效类型转换异常。相反,它似乎必须首先转换为int,然后再转换为double

代码语言:javascript
复制
object o = 12;
double d = (double)(int)o;

我确信简单的答案是“因为这就是拳击的工作原理”,但我希望有人能在这里给你一些启发。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-15 21:57:41

看看今天早些时候的这个问题:Why am I getting InvalidCastException?

仅当目标类型与已装箱的原始类型完全相同时,

取消装箱操作才会成功,因此会引发异常。John Leidegren提供的This link详细解释了这一点。

票数 8
EN

Stack Overflow用户

发布于 2016-11-11 19:37:07

如果您不知道编译时的原始类型:

代码语言:javascript
复制
object o = 12;
double d = (double)Convert.ChangeType(o, typeof(double));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5312731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档