c# - 为什么不能将具有浮点值的对象强制转换为 double 值?

标签 c# casting

<分区>

如果将 float 分配给 double ,它会接受它,但如果首先将 float 分配给一个对象然后转换为 double ,则会给出 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

最佳答案

<分区>

隐式数值转换

float f = 12.4f;
double d = f;//this is ok

拆箱转化

object o = f;
double d1 = (double)o;//doesn't work, (System.InvalidCastException)

对 non_nullable_value_type 的拆箱操作包括首先检查对象实例是否为给定 non_nullable_value_type 的装箱值,然后将该值复制出实例。

换句话说,它检查 o 是否从 double 中装箱,显然在这种情况下不是。


关于转化的更多信息 here .

关于c# - 为什么不能将具有浮点值的对象强制转换为 double 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57034195/

上一篇:c# - ASP.NET Web 服务结果、代理类和类型转换

下一篇:c# - ASP.NET核心MVC : split hosting and business-logic/ui into separate projects

相关文章:

c# - Xamarin Android 相机流

c# - 如何测试 web.config 中的自定义配置部分?

c# - 在 Linux 上从 C# Mono 控制鼠标和键盘

c# - 使用原始 SQL 预加载实体

c# - 在整个 C# 解决方案中应用 Visual Studio 快速操作和重构

c++ - 将迭代器转换为一对对象

iphone - 简单 : NSArray object to Double?

java - 如何在java中将字符串转换为corelabel?

JavaScript 类型转换

mysql - SQL查询列在强制转换为字段的位置未知