将枚举成员传递给方法

时间:2014-02-18 14:36:23

标签: c#

如何通过使用枚举成员调用期望int值的方法。我不希望被调用的方法必须知道枚举。

public enum Volume : int
{
    Low = 1,
    Medium = 2,
    High = 3
}

public void Start() {
    DoSomeWork(Volume.Low);  //this complains
    //this works  DoSomething((int)Volume.Low);

}

public void DoSomeWork(int vol) {
    //Do something
}

4 个答案:

答案 0 :(得分:3)

将其明确地投射到int(正如您已经想到的那样):

DoSomeWork((int)Volume.Low)

禁止从枚举到基础类型的隐式转换,因为在很多情况下此转换没有意义。 @EricLippert解释得很好here

然而,如果您不使用它,为什么要介绍枚举?如果程序中的体积率由枚举指定 - 那么这是您的方法应该作为参数预期的类型。

答案 1 :(得分:1)

这样称呼:

DoSomeWork( (int) Volume.Low );

答案 2 :(得分:0)

为什么不用这种方式:

public void DoSomeWork(Volume volume) {
    //Do something
}

答案 3 :(得分:0)

作为文档陈述

Every enumeration type has an underlying type, which can be any integral type except char. The default underlying type of the enumeration elements is int.

所以你可以简单地将它转换为int并将其传递给方法。

DoSomeWork((int)Volume.Low);