私のプログラムでは、ユーザーがオブジェクトをダブルクリックすると、switch ステートメントを見て、どのイベントが発生するかを確認するリストボックスがあります。リストが大きくなり始めると、オブジェクトのリストを 2 つの場所 (リストボックスに追加するリストと switch ステートメントで 1 回) で維持する必要を回避する方法があるかどうかに興味があります。方法はありますか? 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();
「アクション」には「;」が必要であるというエラーが表示されます。ここでの私の論理は正確ですか?もしそうなら、なぜアクションコールが間違っているのですか?