如何通过使用枚举成员调用期望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
}
答案 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);