为什么我必须将枚举参数重新转换为其声明的类型

本文关键字:转换 类型 声明 新转换 枚举 参数 为什么 | 更新日期: 2023-09-27 18:35:21

我有一个定义为短的枚举,但是当将其中一个元素作为参数传递时,计算机拒绝接受枚举已经是短的,并让我重新转换它。我的问题是为什么?

即枚举设置:短{val1,val2,val3};

public void function (short param) 
{
    // ...
}
function(settings.val1); // will not compile
function((short)settings.val1); // will parse.

为什么我必须将枚举参数重新转换为其声明的类型

因为 settings.val1 是设置类型不短,它不支持隐式强制转换。枚举 :short 只是说它的字段存储在 short 类型的内存区域中。枚举项的默认类型为 Int32

你有一个名为 settings 的枚举类型。 该枚举的后备类型恰好是short,但就编译器而言,该类型仍然是settings

由于settings没有隐式强制short,因此需要一个显式强制转换。

修改方法调用以public void function (settings param) { }

在此上下文中,: 不是继承运算符。相反,它只定义后备数据类型。不幸的是,它看起来像是继承。