此代码运行正常
float ff = 5.5f;
int fd = (int) ff;
Console.Write(fd);
这段代码不在哪里
float ff = 5.5f;
object jf = ff;
int fd = (int) jf;
Console.Write(fd);
跑步者的规则会导致这种情况发生吗?
答案 0 :(得分:14)
你可以将一个浮点数转换为int,但你不能将盒装的浮点数转换为int - 你必须先将它取消装箱。
int fd = (int)(float)jf;
阅读Eric Lippert的帖子Representation and Identity了解更多详情。
答案 1 :(得分:6)
float ff = 5.5f;
object jf = ff;
int fd = (int) jf;
这里当你从float到object时,jf是float的实际类型,你将一个盒装的float直接拆箱到int,这是运行时不接受的。
所以你需要首先取消装箱才能浮动然后再投射到int。