开发者

Cant cast float to int if object

This code runs fine

float ff = 5.开发者_开发百科5f;
int fd = (int) ff;

Console.Write(fd);

Where as this code doesnt

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

Console.Write(fd);

What rule in the runner causes this to happen?


You can cast a float to an int, but you can't cast a boxed float to an int - you have to unbox it first.

int fd = (int)(float)jf;

Read Eric Lippert's post Representation and Identity for more details.


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

here when you box from float to object , actual type which jf is float and you are unboxing an boxed float directly to int which is not accepted by the runtime.

so you need to first unboxed to float and then cast once again to int.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜