0
    public enum Levels
    {
        LevelState1 = 0,
        LevelState2 = 1,
        LevelState3 = 2
    }
    private Levels currentLevel;
    public void ChooseLevel(Levels levelstate)
    {
        switch (levelstate)
        {
            case Levels.LevelState1:
                currentLevel = Levels.LevelState1;
        ...
                break;
            case Levels.LevelState2:
                currentLevel = Levels.LevelState2;
        ...     
                break;
            case Levels.LevelState3:
                currentLevel = Levels.LevelState3;
        ...
                break;
        }
    }

//The variable CurrentLevel is an integer
ChooseLevel(Levels."LevelState"+game1.CurrentLevel.ToString());

我总是在最后一行收到此错误消息:Identifier expected 我应该改变什么?我不知道如何解决这个问题。

4

3 回答 3

2

要么把它包装在一个try/catch

Levels level = (Levels)Enum.Parse(typeof(Levels), 
                                       "LevelState" + game1.CurrentLevel.ToString());
ChooseLevel(level);

或使用Enum.TryParse()

于 2013-10-19T09:36:17.720 回答
0

ChooseLevel期望enum参数,而您使用的是枚举和字符串的混合,您必须解析它:

Levels game1Level = (Levels)Enum.Parse(typeof(Levels), "LevelState" + game1.CurrentLevel);
ChooseLevel(game1Level);

你也可以使用Enum.TryParse

于 2013-10-19T09:36:29.027 回答
0

我觉得你把事情复杂化了。您可以通过类似于以下的方式更简单地执行此操作:

    public enum Levels
{
    LevelState1 = 1,
    LevelState2 = 2,
    LevelState3 = 3
}
private Levels currentLevel;
public void ChooseLevel(int state)
{
    currentLevel = (Levels)state; // casting to enum from int
    // process level or whatever here
}

//The variable CurrentLevel is an integer
ChooseLevel(game1.CurrentLevel);

由于您的 CurrentLevel 变量是一个整数,您可以通过将级别状态绑定到级别范围内的实际整数值来轻松地将其转换为您的枚举。因此,您不是从枚举中的 0 开始,而是从第一级值开始(在您的情况下是 1,不是吗?)。

希望这可以帮助。

于 2013-10-19T11:52:47.880 回答