为什么我必须将枚举参数重新转换为其声明的类型
本文关键字:转换 类型 声明 新转换 枚举 参数 为什么 | 更新日期: 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) { }
在此上下文中,:
不是继承运算符。相反,它只定义后备数据类型。不幸的是,它看起来像是继承。