是的,好吧,这可能是一个愚蠢的问题,但我无法理解事件。我的意思是我理解代表的意思,我可以创建avents并处理它们但我实际上并不理解它们。假设我在Form1.cs文件中有以下代码和事件:
private void btnSleep_Click(object sender, EventArgs e)
{
_currentPerson.Sleep();
}
private void lvPeople_SelectedIndexChanged(object sender, EventArgs e)
{
if (lvPeople.SelectedItems.Count > 0)
{
_currentPerson = (Person)lvPeople.SelectedItems[0].Tag;
_currentPerson.FellAsleep += _currentPerson_FellAsleep;
}
}
void _currentPerson_FellAsleep(object sender, EventArgs e)
{
lvPeople.SelectedItems[0].BackColor = Color.Aqua;
}
在Person类中我有这个:
public delegate void PersonEventsHandlers(Object sender, EventArgs e);
public event PersonEventsHandlers FellAsleep;
public void Sleep()
{
this._isSleeping = true;
FellAsleep(this, EventArgs.Empty);
}
所以一切都很好,很酷。但是,如果我做了这个改变并且忘记了Person事件仍然有效。
private void btnSleep_Click(object sender, EventArgs e)
{
_currentPerson.Sleep();
lvPeople.SelectedItems[0].BackColor = Color.Aqua;
}
那我为什么要使用Person事件?!
谢谢。
答案 0 :(得分:2)
事件都是关于延迟执行的...我想定义一些东西的行为,但现在不执行它......稍后在某些条件下。这是一种注册在需要时执行的延迟功能的方法。
这在分发已编译的程序集时特别有用。人们可以添加到程序集的功能而无需重新编译。