检索字典<字符串,动作>

本文关键字:动作 字符串 字典 检索 | 更新日期: 2023-09-27 18:08:17

我正在为一款基于文本的游戏创造一个解析器。所以我想把所有可能的动词和名词存储到他们自己的字典里。但是当我试图从字典中检索字符串键时,我得到了一个错误…

在Dictionary类中,我创建了动词字典,如下所示:

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

然后我继续给它添加一些值:

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

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

Action Move = dictionary.Verbs["MOVE"];
    public void MoveAction()
    {
        Console.WriteLine("You moved...");
    }

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

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

这就是我得到错误的地方,它说我试图检索的["MOVE"]字符串实际上是一个动作,所以我有点困惑。我遗漏了什么?

检索字典<字符串,动作>

Verbs["MOVE"]将获取与 "MOVE"一起存储的,因此在本例中它将返回一个Action。我假设InputToken是一个字符串列表,并且假设你有一个充满字符串/动作值的字典,代表你的动作,我可能会尝试这样做,这样你就不需要一堆if检查:

花> 利用字典:

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

你也可以进一步压缩:

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

此外,字典是一个非常健壮的类,因此您可以使用它的特性开始添加错误处理检查(如果动词。ContainsKey等)