【发布时间】:2016-09-22 02:52:31
【问题描述】:
我正在为基于文本的游戏构建解析器,尝试一下更像是它。所以我想将所有可能的动词和名词存储到他们自己的字典中。但是在尝试从字典中检索字符串键时出现错误...
在我的 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"] 字符串实际上是一个动作,所以我有点困惑。我在这里错过了什么?
【问题讨论】:
-
所以基本上你所拥有的(结果)是
Action类型。意思是Verbs["string"]= Action the_action_you_defined。当您定义Dictionory<TKey,TValue> someDictionary=new Dictionary<TKey,TValue>someDictionary[TKey]类型时返回TValue -
是的,现在说得通了,感谢您的澄清!
-
不清楚这段代码中的
Action是自定义的enum还是内置的delegate。第二个代码 sn-p 表示前者。最终代码sn-p表示后者。
标签: c# dictionary action