プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2016/09/01

デリゲートとイベントの違い

event_note

C#のデリゲートとイベントについて勉強していて、以下の疑問が残りました。

イベントってデリゲートと何が違うの?
event キーワードを付けることで何が変わるの?

猫でもわかるC#プログラミング 第3版という本を読んで勉強していたのですが、この点についてこの本では全く触れていません。
というわけで、ネットで調べていたら、丁寧に解説してくれている方がいました。

なぜ event キーワードを指定するのか?

詳細な説明はそちらをみていただくとして、簡単にまとめると以下の2点のようです。

代入演算子が使用できなくなる

event キーワードを指定すると、加算代入演算子 += と減算代入演算子 -= しか使用できなくなります。
間違えて代入演算子を使用してしまい、それまでに追加したメソッドがクリアされてしまうのを防ぐことができます。

直接デリゲートをコールできなくなる

イベントハンドラはイベントが発生したときのみにコールして欲しいものです。
event キーワードを指定することで、直接デリゲートをコールできなくなります。