在 C# 中,委托和事件是一種常用的機(jī)制,用于實(shí)現(xiàn)事件驅(qū)動(dòng)的編程模型。委托是一種類型,用于存儲(chǔ)對方法的引用,而事件是委托的一種特殊用法,用于通知其他代碼發(fā)生了某個(gè)特定的動(dòng)作。
下面是一個(gè)簡單的示例,演示了如何在 C# 中定義和使用委托和事件:
using System;
// 定義一個(gè)委托類型
public delegate void MyEventHandler(object sender, EventArgs e);
// 定義一個(gè)包含事件的類
public class EventPublisher
{
// 聲明一個(gè)事件
public event MyEventHandler MyEvent;
// 觸發(fā)事件的方法
public void OnMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
// 定義一個(gè)事件處理方法
public class EventHandler
{
public void HandleEvent(object sender, EventArgs e)
{
Console.WriteLine("Event handled by EventHandler");
}
}
class Program
{
static void Main()
{
EventPublisher publisher = new EventPublisher();
EventHandler handler = new EventHandler();
// 訂閱事件
publisher.MyEvent += handler.HandleEvent;
// 觸發(fā)事件
publisher.OnMyEvent();
}
}
在上面的示例中,我們首先定義了一個(gè)委托類型 MyEventHandler
,然后在 EventPublisher
類中聲明了一個(gè)事件 MyEvent
,并定義了一個(gè)觸發(fā)事件的方法 OnMyEvent()
。然后定義了一個(gè)處理事件的類 EventHandler
,其中包含一個(gè)處理事件的方法 HandleEvent()
。
在 Main
方法中,我們創(chuàng)建了一個(gè) EventPublisher
實(shí)例和一個(gè) EventHandler
實(shí)例,并將 EventHandler
的方法訂閱到 EventPublisher
的事件中。最后,調(diào)用 publisher.OnMyEvent()
方法觸發(fā)事件,EventHandler
的方法會(huì)被調(diào)用。
這就是在 C# 中使用委托和事件的基本方法。通過委托和事件,我們可以實(shí)現(xiàn)松耦合的組件之間的通信,使程序更加靈活和可擴(kuò)展。