0
細かい次の仕事の両方:デリゲート変数を割り当ててイベントハンドラを登録できないのはなぜですか?
BindingList<Employee> lstEmployees = new BindingList<Employee>();
//delegate pointing to an anonymous method
//----------------------------------------
delegate void ListChanged(object lst, ListChangedEventArgs args);
private void Form1_Load(object sender, EventArgs e)
{
listBox1.ValueMember = "Empno";
listBox1.DisplayMember = "Ename";
listBox1.DataSource = lstEmployees;
ListChanged lstchanged = delegate(object lst, ListChangedEventArgs args)
{
lblEmpCount.Text = lstEmployees.Count.ToString();
};
lstEmployees.ListChanged += new ListChangedEventHandler(lstchanged);
}
//Anonymous method (with params)
//-----------------------------------------------------
private void Form1_Load(object sender, EventArgs e)
{
listBox1.ValueMember = "Empno";
listBox1.DisplayMember = "Ename";
listBox1.DataSource = lstEmployees;
lstEmployees.ListChanged += delegate(object lst, ListChangedEventArgs args)
{
lblEmpCount.Text = lstEmployees.Count.ToString();
};
}
ではなく、次
delegate void ListChanged(object lst, ListChangedEventArgs args);
private void Form1_Load(object sender, EventArgs e)
{
listBox1.ValueMember = "Empno";
listBox1.DisplayMember = "Ename";
listBox1.DataSource = lstEmployees;
ListChanged lstchanged = delegate(object lst, ListChangedEventArgs args)
{
lblEmpCount.Text = lstEmployees.Count.ToString();
};
lstEmployees.ListChanged += lstchanged; //error here
}
私は(代理人である)に直接、匿名メソッドを割り当てることができるなら、なぜないデリゲート変数?私は3つの方法の違いを理解しようとしており、なぜ3番目の方法を書くことができないのですか?あなたはこのデリゲートを定義する必要はありません