在C#中使用枚举类型

4

因为我的游戏有一些模式(应该在初始化时提供),所以我想创建一个枚举来表示它们。后来我想要获取这个枚举的值。以下是我的代码 -

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

我想了解是否有更好的方法来完成相同的操作。

1
你想将这个枚举转换为短整型的值,有什么特别的原因吗?枚举更加清晰易懂。 - Steve
@Steve:GetValue() 返回的索引值将在数学表达式中使用。由于模式名称易于使用,因此我创建了枚举。 - ravi
2个回答

11
当然,有一种更简单的方法。只需将枚举类型强制转换为其基础数值数据类型:
value = (short)mode;

是的...这正是我期望的...非常感谢。 - ravi

1
如果有多个类似的开关或者每种模式有不同的行为,那么我建议使用多态性而不是带有开关的枚举。如果您的示例中的开关是使用GameMode的唯一位置,则Heinzi的解决方案更简单。但是,如果您遇到想要执行与显示不同的GameMode操作的情况,请至少记住这一点以备将来参考。

完全同意您的观点。但目前Heinzi的解决方案对我来说是完美的。感谢提前信息。 - ravi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接