在C#中使用枚举

时间:2014-03-29 17:59:52

标签: c# enums

由于我的游戏有一些模式(应该在初始化时提供),所以我想为它创建一个枚举。后来我想得到这个枚举的价值。以下是我的代码 -

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);
    }
}

我很想知道更好的方法,如果存在的话。

2 个答案:

答案 0 :(得分:11)

当然,有一种更简单的方法。只需您的枚举转换为其基础数字数据类型:

value = (short)mode;

答案 1 :(得分:1)

如果有多个这样的开关,或者每种模式有不同的行为,那么我建议使用polymorphism instead of enum with switch。如果您的示例中的开关仅位于使用GameMode的位置,则Heinzi的解决方案更简单。但是如果你遇到想要用GameMode做不同于你所展示的东西的情况,我至少会记住这一点。