在 C# 中使用枚举

本文关键字:枚举 | 更新日期: 2023-09-27 17:55:20

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

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

我很想知道如果有的话,还有更好的方法来做同样的事情。

在 C# 中使用枚举

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

value = (short)mode;
如果有多个

这样的开关,或者每种模式有不同的行为,那么我建议使用多态性而不是带开关的枚举。如果示例中的开关仅在使用GameMode的地方,则 Heinzi 的解决方案更简单。但是,如果您遇到想要用GameMode做与所展示的内容不同的事情的情况,我至少会记住这一点。