C# イベント完全ガイド:ユーザー アクションとシステム通知の処理
イベントとは、キー入力、クリック、マウス移動などのユーザー アクション、またはシステム生成の通知などの発生を指します。アプリケーションはイベントが発生したときにそれに応答する必要があります。たとえば割り込み処理などがこれに当たります。イベントはプロセス間通信にも使用されます。
デリゲートを用いたイベントの仕組み
イベントはクラス内で宣言・発生(raise)され、デリゲートを通じてイベント ハンドラと関連付けられます。この関連付けは同じクラス内でも、別のクラスでも可能です。イベントを含むクラスはイベントを発行するため、パブリッシャー(発行者)クラスと呼ばれます。このイベントを受け取るクラスはサブスクライバー(購読者)クラスと呼ばれます。イベントはパブリッシャー・サブスクライバー モデルを採用しています。
- パブリッシャー:イベントの定義とデリゲートを保持するオブジェクト。イベントとデリゲートの関連付けもここで定義されます。パブリッシャー クラスのオブジェクトがイベントを発生させると、他のオブジェクトに通知されます。
- サブスクライバー:イベントを受け取り、イベント ハンドラを提供するオブジェクト。パブリッシャー クラスのデリゲートが、サブスクライバー クラスのメソッド(イベント ハンドラ)を呼び出します。
イベントの宣言
クラス内でイベントを宣言するには、まずイベント用のデリゲート型を宣言します。
public delegate string BoilerLogHandler(string str);
次に、event キーワードを使ってイベントを宣言します。
event BoilerLogHandler BoilerEventLog;
上記のコードは、BoilerLogHandler というデリゲートと、それが発生したときにデリゲートを呼び出す BoilerEventLog というイベントを定義しています。
実装例
ライブ デモusing System;
namespace SampleApp {
public delegate string MyDel(string str);
class EventProgram {
event MyDel MyEvent;
public EventProgram() {
this.MyEvent += new MyDel(this.WelcomeUser);
}
public string WelcomeUser(string username) {
return "Welcome " + username;
}
static void Main(string[] args) {
EventProgram obj1 = new EventProgram();
string result = obj1.MyEvent("Tutorials Point");
Console.WriteLine(result);
}
}
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
Welcome Tutorials Point
C言語
- C# クラスとオブジェクト:堅牢な OOP の基礎
- C# アクセス修飾子を理解する:public、private、protected、internal など
- C# static キーワード:静的変数、メソッド、クラスをマスターする
- C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
- C# 入れ子クラスを理解する:定義、使用法、継承
- C# 部分クラスと部分メソッドを理解する
- C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
- C++ポリモーフィズム完全理解:仮想関数と純粋仮想関数
- C++データ抽象化完全マスター:インターフェースと実装の分離
- C++データカプセル化:コードを守る仕組みと実装例
- C#プログラム構造の理解:コアコンポーネントと例