Dested
Dested

Reputation: 6433

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?

Upvotes: 8

Views: 1827

Answers (2)

TalentTuner
TalentTuner

Reputation: 17556

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.

Upvotes: 6

Mark Byers
Mark Byers

Reputation: 839114

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.

Upvotes: 14

Related Questions