0

是的,好吧,这可能是一个愚蠢的问题,但我无法理解事件。我的意思是我了解代表的用途,我可以创建并处理它们,但我实际上并不了解它们。假设我在 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 事件呢?

谢谢你。

4

1 回答 1

2

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

这在分发已编译的程序集时特别有用。人们可以在不重新编译的情况下添加程序集的功能。

于 2013-06-16T05:46:14.963 回答