← C#

LESSON / ARTICLE

イベント

発生した出来事を購読者へ通知するイベントの仕組みを学びます。

イベントとは

イベントは、あるオブジェクトで起きた出来事を、関心のある別のオブジェクトへ通知する仕組みです。通知する側は、誰が購読しているかを細かく知る必要がありません。

using System;

class Counter
{
    public event Action<int>? Changed;

    private int value;

    public void Increment()
    {
        value++;
        Changed?.Invoke(value);
    }
}

class Program
{
    static void Main()
    {
        var counter = new Counter();
        counter.Changed += value => Console.WriteLine(value);
        counter.Increment();
    }
}

eventを付けることで、外部からイベントの購読や解除はできますが、通常は外部から直接発火できません。

購読と解除

+=で購読し、-=で解除します。長期間生存する発行元のイベントを購読したままにすると、購読者が解放されにくくなる場合があります。不要になったら解除する設計を検討してください。

イベントの設計

イベントは「何が起きたか」を通知する用途に向いています。戻り値を必要とする処理や、呼び出し側へ結果を返す処理には、通常のメソッドやFuncなどを使います。