为什么我必须重命名枚举参数到其声明的类型?

时间:2012-05-24 02:44:02

标签: c# casting enums

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

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

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

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

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

由于settings没有隐式强制转换为short,因此需要明确的强制转换。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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