ravi
ravi

Reputation: 6328

Working with enum in C#

Since my game has some modes (which should be provided at initialization), so I thought of creating an enum for it. Later on I wanted to get the value of this enum. Below is my code-

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

I am curious to know about a better way to do the same, if exist.

Upvotes: 4

Views: 322

Answers (2)

Euphoric
Euphoric

Reputation: 12849

If there are multiple switches like that or if there is different behavior for each mode, then I would recommend using polymorphism instead of enum with switch. If the switch in your example is only place where GameMode is used, Heinzi's solution is simpler. But I would at least keep this in mind for the future if you encounter situation where you want to do different stuff with GameMode than what you are showing.

Upvotes: 1

Heinzi
Heinzi

Reputation: 172200

Sure, there is a much easier way. Just cast your enum to its underlying numeric data type:

value = (short)mode;

Upvotes: 11

Related Questions