在C#中,委托是一種類(lèi)型,它可以存儲(chǔ)對(duì)一個(gè)或多個(gè)方法的引用。委托可以被用來(lái)將方法作為參數(shù)傳遞給其他方法,或者用來(lái)在運(yùn)行時(shí)動(dòng)態(tài)地將方法綁定到委托上。
定義一個(gè)委托的語(yǔ)法如下:
delegate void MyDelegate(int param);
定義一個(gè)委托后,可以使用該委托來(lái)創(chuàng)建委托實(shí)例,并將方法綁定到該委托上:
MyDelegate myDelegate = new MyDelegate(SomeMethod);
事件是委托的一種特殊用法,它提供了一種機(jī)制,讓類(lèi)能夠通知其他類(lèi)或?qū)ο蟀l(fā)生了一些重要的動(dòng)作或狀態(tài)變化。事件在C#中通常用于實(shí)現(xiàn)觀察者模式。
定義一個(gè)事件的語(yǔ)法如下:
public event MyDelegate MyEvent;
當(dāng)事件發(fā)生時(shí),可以通過(guò)調(diào)用事件來(lái)觸發(fā)委托綁定的方法:
MyEvent?.Invoke(10);
在使用事件時(shí),通常會(huì)定義一個(gè)事件處理方法來(lái)處理事件觸發(fā)時(shí)的邏輯:
void EventHandler(int param)
{
Console.WriteLine("Event occurred with parameter: " + param);
}
MyEvent += EventHandler;
通過(guò)委托和事件的機(jī)制,可以實(shí)現(xiàn)類(lèi)與類(lèi)之間的松耦合,使代碼更具有可維護(hù)性和靈活性。