在C#中,自定義事件是一種特殊的委托類型,它允許你在類中定義一個(gè)事件,以便在類的實(shí)例上觸發(fā)和響應(yīng)這個(gè)事件。自定義事件通常用于實(shí)現(xiàn)對(duì)象之間的解耦通信,使得一個(gè)對(duì)象可以在不直接調(diào)用另一個(gè)對(duì)象的方法的情況下,通知另一個(gè)對(duì)象發(fā)生了某個(gè)事件。
要定義一個(gè)自定義事件,你需要遵循以下步驟:
event
,后跟委托類型的名稱和事件處理方法的簽名。以下是一個(gè)簡單的自定義事件示例:
public class EventPublisher
{
// 定義委托類型
public delegate void MyEventHandler(string message);
// 聲明事件
public event MyEventHandler MyEvent;
// 實(shí)現(xiàn)事件處理方法
protected virtual void OnMyEvent(string message)
{
MyEvent?.Invoke(message);
}
// 觸發(fā)事件的方法
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);
// 觸發(fā)事件
publisher.RaiseMyEvent("Hello, world!");
}
}
在上面的示例中,EventPublisher
類定義了一個(gè)名為MyEvent
的自定義事件,該事件使用MyEventHandler
委托類型。EventSubscriber
類訂閱了MyEvent
事件,并在事件被觸發(fā)時(shí)執(zhí)行相應(yīng)的處理方法。在Main
方法中,我們創(chuàng)建了一個(gè)EventPublisher
實(shí)例和一個(gè)EventSubscriber
實(shí)例,并通過調(diào)用RaiseMyEvent
方法觸發(fā)事件。