在我的程序中,我有一个列表框,当用户双击一个对象时,它会查看 switch 语句以查看应该发生的事件。随着列表开始变大,我很好奇是否有办法避免必须在 2 个位置维护对象列表(一次在添加到列表框的列表中,一次在 switch 语句中。有没有办法索引/读取/存储我的 switch 语句的各种案例,然后将它们作为对象添加到我的列表框中?
示例:(不起作用,只是一个理论)
Switch (n)
ForEach (Case c in Cases)
{
arrayCases.Add(c);
}
listbox.Items.AddRange(arrayCases);
编辑:
继续我现在的字典建议:
public void SetDictionary()
{
//add entries to the dictionary
dict["cat"] = new Action(Cat);
dict["dog"] = new Action(Dog);
//add each dictionary entry to the listbox.
foreach (string key in dict.Keys)
{
listboxTest.Items.Add(key);
}
}
//when an item in the listbox is double clicked
private void listboxTest_DoubleClick(object sender, EventArgs e)
{
testrun(listboxCases.SelectedItem.ToString());
}
public void testrun(string n)
{
//this is supposed to receive the item that was double clicked in the listbox, and run it's corresponding action as defined in the dictionary.
var action = dict[n] as Action action();
}
我相信我上面的代码大部分是正确的并且我理解它,但是操作行: var action = dict[n] as Action action();
显示一个错误,指出“操作”需要一个“;”。我这里的逻辑准确吗?如果是这样,为什么动作调用不正确?