2016年6月4日土曜日

[C#] event(イベント)

こんにちは。明月です。
今日はevent(イベント)について勉強します。


前の投稿で「delegate」はメソッドの動作を集まって呼び出せるものだと勉強しました。その中で「delegateフィールド」を通って「delegate」を格納あるいは呼び出すのができます。 でも「delegateフィールド」は「public」で公開すると内部だけではなくクラスの外部でも呼び出すのができます。




「delegate」はメソッドの代理子なので上のことに実装するのは悪いではないですが、そのことよりクラスの内部処理を外部に呼び出すのは怪しいじゃないかと思えられますね。
すなわち、「delegate」フィールドはクラスの内部処理が内部と外部のメソッドに呼び出すことができる型になります。


event(インベント)


「event」の場合はクラスの外部で呼び出すのを防止しています。使用方法は既存の「delegate」フィールドの前に「event」キーワードを付けることで使えます。






「delegateField」と「event」の差を纏めると下記とおりです。


  • ・delegateフィールドは使用演算子は(=,+=,-=)ですが、イベントは(+=,-=)だけです。
  • ・delegateフィールドはクラス内部、外部すべて呼び出すのができますが、eventはクラス内部だけ呼び出せます。


0 件のコメント