0

はい、わかりました。それはおそらくばかげた質問ですが、イベントを理解できません。つまり、デリゲートの目的を理解しているということです。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 イベントを使用する必要があるのでしょうか?!

ありがとうございました。

4

1 に答える 1

2

イベントはすべて遅延実行に関するものです...何かの動作を定義したいのですが、今は実行したくありません...後で特定の条件下で. 必要なときに実行される遅延機能を登録する方法です。

これは、コンパイル済みのアセンブリを配布するときに特に便利です。ユーザーは、再コンパイルせずにアセンブリの機能を追加できます。

于 2013-06-16T05:46:14.963 に答える