コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】eventとdelegateの違い

class MyClass
{
    public       Action Delegate; // delegate
    public event Action Event;    // event
}

static void Main()
{
    Action act = delegate { };

    var n = new MyClass();

    // delegateの場合
    n.Delegate = act;
    n.Delegate += act;
    n.Delegate -= act;
    n.Delegate();
    
    // eventの場合
    n.Event = act; // エラー
    n.Event += act;
    n.Event -= act;
    n.Event(); // エラー
}

eventキーワードを使用すると
外部から代入と実行はできなくなります

汎用性が高いのはdelegateで
安全性が高いのはeventです