首页 > 解决方案 > 为什么我可以将 Int 转换为 IComparable?

问题描述

我在一个测验中遇到了一个问题,即“以下是做什么的?”:

// Value is an int
IComparable thing = (IComparable)value;

显然答案是拳击,但我不知道为什么。为什么这被认为是拳击,它在做什么?我的印象是拳击只能发生在object.

标签: c#boxingicomparable

解决方案


为什么这被认为是拳击

因为您通过创建包含该值的对象(“框”)将值类型转换为引用类型。它与您习惯的拳击方式相同object

它在做什么

装箱,但结果类型为IComparable.

我的印象是拳击只能与对象一起发生。

不,装箱可以发生在值类型的继承层次结构中的任何引用类型上。实际上,这意味着:

  • 值类型支持的任何接口
  • object
  • ValueType
  • Enum(对于枚举)

推荐阅读