1

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

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

public void function (short param) 
{
    // ...
}

function(settings.val1); // will not compile

function((short)settings.val1); // will parse.
4

4 回答 4

1

将您的方法调用修改为public void function (settings param) { }

于 2012-05-24T03:14:57.800 回答
1

在这种情况下,:不是继承运算符。相反,它只定义了支持数据类型。不幸的是,它看起来像继承。

于 2012-05-24T03:15:32.910 回答
1

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

于 2012-05-24T02:47:54.353 回答
1

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

由于settings没有隐式转换为short,因此需要显式转换。

于 2012-05-24T02:53:49.420 回答