event| 要素 | 說明 | 程式碼關鍵字 |
|---|---|---|
| 定義事件 | 宣告事件成員 | event DelegateType EventName |
| 激發事件 | 事件源主動通知 | EventName?.Invoke(sender, args) |
| 監聽事件 | 接收者註冊處理器 | source.EventName += Handler |
| 執行事件 | 處理器邏輯運行 | 委托目標方法執行 |
// 1. 事件參數
public class MyEventArgs : EventArgs { public string Message { get; } }
// 2. 委托型別 (可用內建 EventHandler)
public delegate void MyEventHandler(object sender, MyEventArgs e);
// 3. 事件源
public class Publisher
{
public event MyEventHandler MyEvent;
protected virtual void OnMyEvent(MyEventArgs e) => MyEvent?.Invoke(this, e);
public void DoSomething()
{
// 業務邏輯...
OnMyEvent(new MyEventArgs("完成"));
}
}
// 4. 使用
var pub = new Publisher();
pub.MyEvent += (s, e) => Console.WriteLine(e.Message);
pub.DoSomething();
掌握基礎後,建議學習:
EventHandler/EventHandler<TEventArgs> 簡化委托宣告