如果将浮点数分配给双精度数,它将接受它,但是如果首先将浮点数分配给一个对象,然后将其强制转换为双精度数,则将给出InvalidCastException。
有人可以澄清一下吗?
float f = 12.4f;
double d = f;//this is ok
//but if f is assigned to object
object o = f;
double d1 = (double)o;//doesn't work, (System.InvalidCastException)
double d2 = (float)o;//this works
Run Code Online (Sandbox Code Playgroud)
隐式数值转换
float f = 12.4f;
double d = f;//this is ok
Run Code Online (Sandbox Code Playgroud)
拆箱转换
object o = f;
double d1 = (double)o;//doesn't work, (System.InvalidCastException)
Run Code Online (Sandbox Code Playgroud)
对non_nullable_value_type的拆箱操作包括以下步骤:首先检查对象实例是给定的non_nullable_value_type的装箱值,然后将其复制出实例。
换句话说,它检查是否o从中装箱double,显然不是在这种情况下。
有关转换的更多信息,请点击此处。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |