在C#中,自定義事件是一種特殊的委托類型,它允許你在類中定義一個事件,以便在類的實例上觸發和響應這個事件。自定義事件通常用于實現對象之間的解耦通信,使得一個對象可以在不直接調用另一個對象的方法的情況下,通知另一個對象發生了某個事件。
要定義一個自定義事件,你需要遵循以下步驟:
event
,后跟委托類型的名稱和事件處理方法的簽名。以下是一個簡單的自定義事件示例:
public class EventPublisher
{
// 定義委托類型
public delegate void MyEventHandler(string message);
// 聲明事件
public event MyEventHandler MyEvent;
// 實現事件處理方法
protected virtual void OnMyEvent(string message)
{
MyEvent?.Invoke(message);
}
// 觸發事件的方法
public void RaiseMyEvent(string message)
{
OnMyEvent(message);
}
}
public class EventSubscriber
{
public EventSubscriber(EventPublisher publisher)
{
// 訂閱事件
publisher.MyEvent += OnMyEvent;
}
// 事件處理方法
private void OnMyEvent(string message)
{
Console.WriteLine($"Event received: {message}");
}
}
public class Program
{
public static void Main()
{
EventPublisher publisher = new EventPublisher();
EventSubscriber subscriber = new EventSubscriber(publisher);
// 觸發事件
publisher.RaiseMyEvent("Hello, world!");
}
}
在上面的示例中,EventPublisher
類定義了一個名為MyEvent
的自定義事件,該事件使用MyEventHandler
委托類型。EventSubscriber
類訂閱了MyEvent
事件,并在事件被觸發時執行相應的處理方法。在Main
方法中,我們創建了一個EventPublisher
實例和一個EventSubscriber
實例,并通過調用RaiseMyEvent
方法觸發事件。