tonari note

オンラインゲームエンジニアの雑記

デリゲートとイベントのお話

C#ではデリゲートを用いることでメソッドを変数のように扱うことができます。

delegate(MSDN)

また、これと似たようなキーワードにeventがあります。

event(MSDN)

単にメソッドを変数のように扱いたい時はデリゲート(Action/Func)を使用するのですが、クラス内にあるデリゲートを外部に公開したい場合には、イベントを使用する方がいい場合があります。

イベントはデリゲートと違い、

  • クラス外からはデリゲートの追加(+=)と解除(-=)のみすることができる
  • デリゲートを呼び出せるのはクラス内からのみ

となっています(カプセル化)。