我有一个定义为短的枚举,但是当将其中一个元素作为参数传递时,计算机拒绝接受枚举已经是短的并且让我重铸它。我的问题是为什么?
即枚举设置:短{val1,val2,val3};
public void function (short param)
{
// ...
}
function(settings.val1); // will not compile
function((short)settings.val1); // will parse.
将您的方法调用修改为public void function (settings param) { }
在这种情况下,:
不是继承运算符。相反,它只定义了支持数据类型。不幸的是,它看起来像继承。
因为 settings.val1 是设置类型不短并且不支持隐式转换。Enum : short 只是说它的字段存储在 short 类型的内存区域中。枚举项的默认类型是 Int32
您有一个名为 的枚举类型settings
。该枚举的支持类型恰好是short
,但就编译器而言,该类型仍然是settings
。
由于settings
没有隐式转换为short
,因此需要显式转换。