如果对象,则不能将float转换为int

这段代码运行正常

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); 

跑步者的规则是什么导致这种情况发生?

你可以将一个浮点数转换为int,但你不能将一个盒装浮点数转换为int – 你必须先将它取消装箱。

 int fd = (int)(float)jf; 

阅读Eric Lippert的post陈述和身份以获取更多详细信息。

 float ff = 5.5f; object jf = ff; int fd = (int) jf; 

这里当你从float到object时,jf是float的实际类型,你将一个盒装的float直接拆箱到int,这是运行时不接受的。

所以你需要首先将unboxed浮动然后再次转换为int。