2016年8月23日火曜日

[C#]イベントの使い方

 日常プログラミングしていると必ず目にするイベント、View画面とかならボタンクリックなどを当たり前のように使っているイベントについてテーマをあげます。


イベントとは何か
 オブジェクト自身の変化を不特定多数に通知する1:Nの繋がりです。
相手に処理を要求するAPIような使い方で1:1の繋がりではないです。
この部分をしっかり覚えておかないとイベント処理を扱いで曖昧さが出てきます。


イベントの作り方
 対象オブジェクトにおける変化を個別に分けてイベント化する方法があります。
このイベント化する上で気おつけなくてはいけない事は、

 「変化したら通知する」

だけにとどめて置くことです。


内部で変化があったから

 「通知前後に他の処理を動かす」

というような使い方は
イベントと内部処理の依存関係が発生して外部のイベント処理にまで
影響が波及する恐れがあるので、必ず

 「変化したら通知する」

だけにとどめておくと良いです。
この時処理は一切含まれません。


余談ですが、ReactiveExtentions(Rx,Push型)はイベント処理のLinq化というものです。
実処理とは無縁の「変化したら通知する」だけのイベントをこねくり回して
新たに合成したイベントを作るという事も可能になりますね。

0 件のコメント:

Androider