c# - 为什么我可以将 Int 转换为 IComparable?
问题描述
我在一个测验中遇到了一个问题,即“以下是做什么的?”:
// Value is an int
IComparable thing = (IComparable)value;
显然答案是拳击,但我不知道为什么。为什么这被认为是拳击,它在做什么?我的印象是拳击只能发生在object
.
解决方案
为什么这被认为是拳击
因为您通过创建包含该值的对象(“框”)将值类型转换为引用类型。它与您习惯的拳击方式相同object
。
它在做什么
装箱,但结果类型为IComparable
.
我的印象是拳击只能与对象一起发生。
不,装箱可以发生在值类型的继承层次结构中的任何引用类型上。实际上,这意味着:
- 值类型支持的任何接口
object
ValueType
Enum
(对于枚举)
推荐阅读
- doctrine - 具有自引用 ManyToMany 的继承实体:EXTRA_LAZY 获取模式不起作用
- javascript - 如何仅在一页上更改 Javascript 轮播 (slick.js) 设置?
- python - 如何根据多列共有的值对数据框进行分组?
- node.js - 节点 `smtp-server` 模块不适用于 TLS
- api - 如何使用suitetalk在netsuite中创建发票?
- php - 日期 from_date 和 to_date 之间的 laravel
- javascript - 用于在不使用 Web 服务器的情况下调试客户端 javascript 的 launch.json 配置
- javascript - Firebase javascript Admin SDK:加载数组的长度不正确
- excel - 使用 Spire.XLS 将 .XLS 转换为 .XLSM 时出现条件格式问题
- docker - jupyterhub - 如何持久安装软件包?