将0.0转换为双倍有什么问题?

时间:2010-11-06 12:26:53

标签: c# casting .net

当我尝试将0.0转换为双倍时我有InvalidCastException,为什么会这样?我做(float)value时很好。

alt text

5 个答案:

答案 0 :(得分:60)

通常,当您将值类型放入object(称为拳击)时,您需要取消完全相同< / em>值类型。您无法转换为其他类型。这就是这里发生的事情。

如果您真的想要转换对象,那么首先需要将其解包。假设您的原始值为float,然后在object

中将其装箱
double d = (double) (float) value;

或者使用其他人提出的使用Convert的方法。这样做的好处是不必知道原始类型。

答案 1 :(得分:11)

这是正常的。如果对象类型为float,则无法将其转换为double,因为它们的类型不同:

object o = 1.0f;
double d = (double)o; // will throw an exception

你需要转换它:

double d = Convert.ToDouble(o);

答案 2 :(得分:4)

浮动已被装箱作为对象。因此,您正在尝试将盒装浮动转换为双精度浮动。使用Vyas的转换 - 它更灵活,应该始终做正确的事情:

var val=Convert.ToDouble(value);

答案 3 :(得分:3)

使用此

var val=Convert.ToDouble(value);

答案 4 :(得分:3)

您无法将任意对象强制转换为double