由于我的游戏有一些模式(应该在初始化时提供),所以我想为它创建一个枚举。后来我想得到这个枚举的价值。以下是我的代码 -
enum GameMode : short
{
Stop = 0,
StartSinglePlayer = 4,
StartMultiPlayer = 10,
Debug = 12
}
class Game
{
static short GetValue(GameMode mode)
{
short index = -1;
if (mode == GameMode.Stop)
index = 0;
else if (mode == GameMode.StartSinglePlayer)
index = 4;
else if (mode == GameMode.StartMultiPlayer)
index = 10;
else if (mode == GameMode.Debug)
index = 12;
return index;
}
static void Main(string[] args)
{
var value = GetValue(GameMode.StartMultiPlayer);
}
}
我很想知道更好的方法,如果存在的话。
答案 0 :(得分:11)
当然,有一种更简单的方法。只需将您的枚举转换为其基础数字数据类型:
value = (short)mode;
答案 1 :(得分:1)
如果有多个这样的开关,或者每种模式有不同的行为,那么我建议使用polymorphism instead of enum with switch。如果您的示例中的开关仅位于使用GameMode
的位置,则Heinzi的解决方案更简单。但是如果你遇到想要用GameMode
做不同于你所展示的东西的情况,我至少会记住这一点。