在C#中,可以使用委托和事件關鍵字來定義事件。首先需要定義一個委托類型,該委托類型定義了事件處理方法的簽名,然后使用event關鍵字聲明一個事件,將委托類型作為事件的類型。
例如,定義一個簡單的事件:
public class EventBus
{
// 定義委托類型
public delegate void EventHandler(object sender, EventArgs e);
// 聲明一個事件
public event EventHandler MyEvent;
// 觸發事件的方法
public void RaiseEvent()
{
OnMyEvent(EventArgs.Empty);
}
protected virtual void OnMyEvent(EventArgs e)
{
MyEvent?.Invoke(this, e);
}
}
在上面的例子中,定義了一個名為 EventBus 的類,其中聲明了一個名為 MyEvent 的事件,該事件的委托類型為 EventHandler。當調用 RaiseEvent 方法時,會觸發 MyEvent 事件。
在使用時,可以將事件處理方法與事件綁定:
EventBus eventBus = new EventBus();
eventBus.MyEvent += HandleEvent;
static void HandleEvent(object sender, EventArgs e)
{
Console.WriteLine("Event handled");
}
通過這種方式,可以實現事件與事件處理方法之間的解耦,使代碼更加靈活和易于維護。