正在检索字典<string, Action>

Retrieving dictionary<string, Action>

我正在为一个基于文本的游戏构建一个解析器,尝试一下就好了。所以我想把所有可能的动词和名词存入自己的字典中。但是当我尝试从字典中检索字符串键时出现错误...

在我的词典 class 中,我创建了 Verbs 词典,如下所示:

public Dictionary<string, Action> Verbs = new Dictionary<string, Action>();

然后我继续为其添加一些值:

public void PopulateVerbs()
    {
        Verbs.Add("MOVE", Action.MoveAction);          
    }

在我的 VerbAction class 中,我有一些基于输入的方法:

Action Move = dictionary.Verbs["MOVE"];

    public void MoveAction()
    {
        Console.WriteLine("You moved...");
    }

最后,在我的 CommandHandler class 中,我处理输入:

if (InputToken[0] == dictionary.Verbs["MOVE"])
            Action.MoveAction();

这就是我收到错误的地方,它说我要检索的 ["MOVE"] 字符串实际上是一个操作,所以我有点困惑。我在这里错过了什么?

Verbs["MOVE"] 将获得与 key "MOVE" 一起存储的 value,因此它将return 在这种情况下是一个动作。我假设 InputToken 是一个字符串列表,并且假设您有一个包含代表您的操作的 string/action 值的字典,我可能会尝试这样的操作,这样您就不需要一堆 if 检查:

if (InputToken[0] == dictionary.Verbs["MOVE"])
        Action.MoveAction();

并利用字典来发挥自己的优势:

Action theAction = dictionary.Verbs[InputToken[0]];
theAction();

你也可以进一步压缩:

dictionary.Verbs[InputToken[0]]();

此外,该词典非常强大 class,因此您可以使用它的功能开始添加错误处理检查(如果 Verbs.ContainsKey,等等)