为什么事件存在?

时间:2013-06-16 05:17:39

标签: c# events delegates

是的,好吧,这可能是一个愚蠢的问题,但我无法理解事件。我的意思是我理解代表的意思,我可以创建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事件?!

谢谢。

1 个答案:

答案 0 :(得分:2)

事件都是关于延迟执行的...我想定义一些东西的行为,但现在不执行它......稍后在某些条件下。这是一种注册在需要时执行的延迟功能的方法。

这在分发已编译的程序集时特别有用。人们可以添加到程序集的功能而无需重新编译。