检索字典<string,action =“”>

时间:2016-09-22 02:52:31

标签: c# dictionary action

我正在为基于文本的游戏构建解析器,尝试更像是它。所以我想将所有可能的动词和名词存储到他们自己的字典中。但是在尝试从字典中检索字符串键时出现错误...

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

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”]字符串实际上是一个动作,所以我有点困惑。我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

动词[&#34; MOVE&#34;]将获得与&#34; MOVE&#34;一起存储的,因此它将返回在这种情况下的行动。我假设InputToken是一个字符串列表,并且假设你有一个充满字符串/动作值的字典代表你的行为,我可能会尝试这样的事情,所以你不需要一堆if检查:

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

使用字典对你有利:

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

您也可以进一步缩小:

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

此外,字典是一个相当健壮的类,因此您可以使用其功能开始添加错误处理检查(如果Verbs.ContainsKey等)